我需要将onTouch事件的X、Y坐标映射到ImageView内Bitmap的X、Y坐标上,为此我采用以下方法。
然而,这种方法似乎只在以下情况下有效:
a)完全缩放图像(全部放大)
b)如果我将应用程序设置为全屏,则在任何情况下都有效。
final int index = event.getActionIndex();
touchLocation = new float[] {
event.getX(index), event.getY(index)
};
Matrix matrix = new Matrix();
ImageView view = getImageView();
view.getImageMatrix().invert(matrix);
matrix.postTranslate(view.getScrollX(), view.getScrollY());
matrix.mapPoints(touchLocation);
// touchLocation[0] is real x and [1] is real y
然而,我的活动是一个ActionBar活动,因此在Y轴上会有一点错误的位置。我尝试减去ActionBar和StatusBar的高度,但这并不总是有效。
奇怪的是,在全屏状态下,无论我将图像完全放大还是缩小,我始终能够正确地计算出坐标,但在任何其他类型的Activity中,这都无法正确地映射点。