首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从unScrollable视图在MotionEvent中检测涡旋

从unScrollable视图在MotionEvent中检测涡旋
EN

Stack Overflow用户
提问于 2015-01-19 13:19:31
回答 1查看 790关注 0票数 0

我使用的是一个具有滚动触发器的ScrollView,在不可滚动状态下,我希望检测到可能的滚动,但是我不想滚动视图,而是使用这个值做其他事情。

代码语言:javascript
复制
@Override
    public boolean onInterceptTouchEvent(MotionEvent event) {
        if (!mScrollable) {
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    y = event.getY();

                case MotionEvent.ACTION_UP:
                    y = event.getY();

                case MotionEvent.ACTION_MOVE:
                    double newY = event.getY();
                    double difY = y - newY;
                    mCallbacks.onScrollChanged((int) difY, false, false);
                    y = newY;

            }
            return false;
        } else return super.onInterceptTouchEvent(event);
    }

如果情况返回为true,则此代码将difY作为0返回,而根本不调用ACTION_MOVE。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-19 13:25:21

onInterceptTouchEvent用于告诉Android,您的视图对当前正在发生的触摸事件感兴趣,并且希望不断收到有关它的更新,直到它结束为止。

要实际处理触摸,您应该重写onTouchEvent,这是一个回调,它将一直接收触摸,直到它被取消或ACTION_UP为止。

一个快速/肮脏的解决方法是返回true on onInterceptTouchEvent并将当前代码移动到onTouchEvent。这样做的好处是很容易做到,缺点是它会阻止您的所有视图parentView接收触摸事件。

正确的方法是,只有在视图检测到onInterceptTouchEvent并在onTouchEvent期间继续处理触摸之后,才返回真正的difY != 0

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28025571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档