2016-11-03 13 views
1

私は飛行機のインテリアの青写真を持っています。これはクリック時にトーストとして各座席とエリアの関連情報を表示します。私はレイアウトがズーム可能とパン可能になりたいとボタンは、我々がクリッカブルを定義する方法ので、私はしかし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); 

    } 
+0

ため、このstackoverflowの質問を参照してください 'ImageViewの#getImageMatrix'を参照してください。*「ビューのオプションの行列を返します。 "* – pskink

答えて

0

基本的には、画像内を移動可能なカメラが必要なので、画像のクロップに使用されている手法とまったく同じ手法で四角形を調整できます。画像を切り抜くのではなく、カメラビュー

は詳細 How to create a resizable rectangle with user touch events on Android?

+0

私が必要としているのはありがたいことですが、トリミングされた座標は、線形レイアウトとイメージビューの両方を整列しようとしたにもかかわらず、ClickableAreasImagesで使用されている座標に対応していません私は奥深い情報のために私のポストを編集しました。何が間違っているか分かりません。 –

関連する問題