垂直运动(向上/向下)中的手指拖动应仅在图像视图的图像内检测,而不是在外部检测。但是,在图像上方的区域中,它会检测到拖动。没有其他地方检测到拖拽,也没有在左侧,右侧或底部,而是仅在图像正上方的区域。它在图像内部工作,但也在它上面,它不应该这样做。我已经尝试了很多东西来解决这个问题,但没有任何效果。有人可以帮忙吗?
所以,在我的活动中的onCreate中,我有一个用于缩放图像的方法:
redShape = (ImageView) findViewById(R.id.image1);
scaleImage();
在Motion事件中,向下操作:
rect = new Rect(redShape.getLeft(),redShape.getTop(),redShape.getRight(),redShape.getBottom());
在行动中:
if (rect.contains(posX, posY)){
在上面的if语句中,我只需要在拖动时计算代码。
编辑1:
drawableHeight = drawable2.getIntrinsicHeight();
drawableWidth = drawable2.getIntrinsicWidth();
drawableRect = new RectF(0, 0, drawableWidth, drawableHeight);
m.mapRect(drawableRect);
我接下来会这样做(顺便说一句,redShape是imageview):
redShape.setImageMatrix(m);
在rect.contains(posX,posY)中,我是否将其更改为drawableRect.contains(posX,posY)?
编辑2:
public void onWindowFocusChanged(boolean hasFocus) {
// TODO Auto-generated method stub
super.onWindowFocusChanged(hasFocus);
Log.i(" test 3 ", "width : " + redShape.getWidth() + "height: " + redShape.getHeight());
}