android检测只在图像内部拖动

时间:2015-08-12 14:42:21

标签: android events imageview motion

垂直运动(向上/向下)中的手指拖动应仅在图像视图的图像内检测,而不是在外部检测。但是,在图像上方的区域中,它会检测到拖动。没有其他地方检测到拖拽,也没有在左侧,右侧或底部,而是仅在图像正上方的区域。它在图像内部工作,但也在它上面,它不应该这样做。我已经尝试了很多东西来解决这个问题,但没有任何效果。有人可以帮忙吗?

所以,在我的活动中的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());



    }

0 个答案:

没有答案