Android:onTouch事件在外部触摸时缩放动画后发生

时间:2013-01-02 03:01:39

标签: android animation ontouchevent

我有一个如下所示的布局:

<FrameLayout
    android:id="@+id/container"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:scaleType="center"/>
</FrameLayout>

“image”是全屏开始的。有一个onTouchListener设置为“图像”,它工作正常。然后我使用ScaleAnimation缩放“图像”(大约一半大小),我期望发生的是onTouchListener只会在触摸“图像”时才会拾取,但它仍然会触发整个屏幕并且getX获得相同的效果值为getRawX。

有没有办法检测我是否在onTouch的图像范围内?我想过根据比例值对边界进行硬编码,但肯定必须有更优雅的解决方案吗?

1 个答案:

答案 0 :(得分:0)

首先,您可以在屏幕上找到图像的宽度和高度,如下所示:

widthOnScreen = origWidth * scaleFactor
heightOnScreen = origHeight * scaleFactor

正如您所说“图像是全屏开始的”,origWidth = viewWidthorigHeight = viewHeight和scaleFactor是图像上应用的总比例,直到最大/最小。

matrix.getvalues(val);

保持左,上,右,下:

left=val[2]; 
right=val[Matrix.MSCALE_X]*actualWidth+val[2]; //actualWidth is image's actual width
top=val[5];
bottom=vals[Matrix.MSCALE_Y]*actualHeight+val[5];

然后onTouch(),检查您的event.getX()getY()是否在这些左,上,右和下界之内。