安卓 setOnTouchListener

标签 android gesture

对于同一个问题,我看了一些不同的回答,所以我不知道哪个是对的,然后我决定再问一遍。请尽量不要引用此答案中的任何其他链接。如果您想这样做,我会期待一些额外的解释。

我的问题是: 我在 ViewPager 中有一个 ImageView,我的 ImageView 有一些手势检测(缩放和平移),我使用默认的 ViewPager ,默认情况下具有滑动检测。 onTouch 事件链是如何工作的?我层次结构中的最低 View 将始终获得 onTouch,如果该方法返回 false,父级会处理它吗?也许恰恰相反?

我问的是,因为我有一个 ImageView,它有左右手势,当我到达图像的边缘时,我必须向父级发送一个事件(a ViewPager) 来处理分页事件。任何关于如何做的进一步提示,我们将不胜感激。

最佳答案

因此,我已经以比 onInterceptTouchEvent 更好的方式管理 ViewPager 的 subview 中的多次触摸,我这么说是因为在我的情况下,为了知道我是否必须滚动 subview 而不是 Pager,我需要起点和终点之间的距离,我不想保存这些变量并在之后计算增量。

无论如何,在查看 ViewPager 的源代码之后,我发现有一个非常好的方法我应该为此实现。 这是我的实现:

@Override
protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) {
    if (v instanceof ImageViewTouch) {
        return ((ImageViewTouch) v).canScroll(dx);
    } else {
        return super.canScroll(v, checkV, dx, x, y);
    }
}

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/support/v4/view/ViewPager.java#ViewPager.canScroll%28android.view.View%2Cboolean%2Cint%2Cint%2Cint%29

关于安卓 setOnTouchListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11196781/

相关文章:

android - 在android中的更改 Activity 上滑动xml动画

java - HashMap 与值不匹配

android - SimpleOnGestureListener 不适用于 ScrollView

java - Android 手势不起作用

android - 使用 GestureDetectorCompat 在特定 View 上注册 TouchListener

ios - 如何排除 subview 的手势?

Android 模拟器屏幕仅占实际 android 模拟器屏幕的一小部分

Android 安全 HTTP 通信

Android Jetpack : Observing ArrayList not working

ios - ios7中的手势不起作用