私は飛行機のインテリアの青写真を持っています。これはクリック時にトーストとして各座席とエリアの関連情報を表示します。私はレイアウトがズーム可能とパン可能になりたいとボタンは、我々がクリッカブルを定義する方法ので、私はしかしImageviewの異なる領域の特定のピクセルパラメータを取得しますか?
https://github.com/Lukle/ClickableAreasImages
の助けを借りてそれを行うことができましたこれ、画像自体に取り付けられています。領域ハード(より詳細に上記のリンクに見られるように)次のフォーマットで符号化されている:
// Define your clickable areas
// parameter values (pixels): (x coordinate, y coordinate, width, height) and assign an object to it
clickableAreas.add(new ClickableArea(500, 200, 125, 200, new Character("Homer", "Simpson")));
clickableAreas.add(new ClickableArea(600, 440, 130, 160, new Character("Bart", "Simpson")));
この方法は、正確なX、Y座標と幅とでクリック可能領域の高さを知ることが私を必要とします私のアプリケーションに必要な1つの重要な側面として私に大きな挑戦は多数のクリックによるクリック性の正確さです画像ビュー内のクリック可能な領域。
私の質問は、layout.xmlタブや他の場所で描画することができ、対応するx、y座標と各クリック可能領域の幅と高さを抽出する方法ですか?
ご協力いただきありがとうございます。
EDIT: https://stackoverflow.com/a/17807469/7034521の助けを借りて、DrawViewコードを線形レイアウトに付加した後で、座標を見つけるためにクロップすることができました。 しかし、ClickableAreasImagesで座標が使用された場合、クロップ領域の座標はクリック可能領域に対応しませんでした。リニアレイアウトとイメージビューの幅と高さの両方を 'fill_parent'に設定するようにしました。何が問題なのかよく分かりません。以下は、私は、関連するかもしれないと思う私のプロジェクトからいくつかの付属コードです:DrawViewの下
(https://stackoverflow.com/a/17807469/7034521に以下の部分を追加):
case MotionEvent.ACTION_UP:
while (isNotPrinted) {
int x = colorballs.get(0).getX();
int y = colorballs.get(0).getY();
int width = colorballs.get(2).getX() - colorballs.get(0).getX();
int height = colorballs.get(1).getY() - colorballs.get(0).getY();
Log.i("x, y, width, height:",Integer.toString(x) + ", " + Integer.toString(y) +
", "+ Integer.toString(width) + ", "+Integer.toString(height));
isNotPrinted = false;
}
break;
activity.xml:
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/imageView3"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:src="@drawable/b777_212b_1" />
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@+id/myLinearLayout"
android:layout_alignRight="@+id/imageView3"
android:layout_alignEnd="@+id/imageView3"></LinearLayout>
activity.java:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_coordinates_tester);
LinearLayout layout = (LinearLayout) findViewById(R.id.myLinearLayout);
DrawView myView = new DrawView(this);
myView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
// myView.setText("Added myView");
layout.addView(myView);
// Add image
ImageView image = (ImageView) findViewById(R.id.imageView3);
image.setImageResource(R.drawable.b777_212b_1);
}
ため、このstackoverflowの質問を参照してください 'ImageViewの#getImageMatrix'を参照してください。*「ビューのオプションの行列を返します。 "* – pskink