1

右揃えの FrameLayout 内に含まれる ImageView に正方形の画像があります (ランドスケープ レイアウト)。FrameLayout は FillParent の幅と高さに設定され、ImageView は Adjust View Bounds に設定されているため、結果の ImageView は完全な正方形になり、各辺は横向きレイアウトの高さの長さになり、右揃えになります。ただし、元の画像はこれよりも大きいです。ImageView 自体に対してクリックされた座標を取得する必要があります (つまり、ImageView の左上隅は 0,0 で、右下隅は表示される幅と高さの座標になります)。クリックされたポイントは、ImageView の中間点を過ぎていました。最初に、次を使用して ImageView のサイズを取得します。

int myImageViewWidth = imageView.getWidth();
int myImageViewHeight = imageView.getHeight();

私は OnTouchListener を作成しました。この中で event.getX() と event.getY() を使用していますが、これは表示サイズではなく、画像の元のサイズに対する座標を返すようです。私も次のことを試しました:

Matrix m = imageView.getImageMatrix();
float[] values = new float[9];
m.getValues(values);
float relativeX = (event.getX() - values[2]) / values[0];
float relativeY = (event.getY() - values[5]) / values[4];

しかし、これも不正確な座標を返すようです。誰でも助けてもらえますか?

4

0 に答える 0