美文网首页Android进阶之路
Android知识点(转)——Android onTouchEv

Android知识点(转)——Android onTouchEv

作者: 半寿翁 | 来源:发表于2019-11-26 22:14 被阅读0次

    先扯两句

      首先声明,这篇博客解决方案取自skylarklxlongAndroid onTouchEvent的MotionEvent.ACTION_UP不响应

      PS:不知道大家是否还记得之前写的Android知识点:触碰事件监听中横纵坐标的获取方法:getX和getRawX的区别触碰事件监听中按下动作:ACTION_DOWN 和ACTION_POINTER_DOWN区别,介绍的都是onTouchEvent的监听,而其实这两个效果想要使用,其实都离不开今天的内容——MotionEvent.ACTION_UP不响应。
      其实不只是MotionEvent.ACTION_UP,更具体来说,今天博客的内容实际上应该是除了MotionEvent.ACTION_DOWN以外,其他的都不会响应。若是其他情况请绕行,这篇博客也帮不了你。

      先提供一下Android知识点——目录的链接,然后让我们进入正题。

    正文

      首先我们还是看一下最典型的触碰事件:

    textView.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    switch (event.getAction()) {
                        case MotionEvent.ACTION_DOWN:
                            Log.i(getName(), "按下了");
                            break;
    
                        case MotionEvent.ACTION_MOVE:
                            Log.i(getName(), "移动了");
                            break;
    
                        case MotionEvent.ACTION_UP:
                            Log.i(getName(), "抬起了");
                            break;
                    }
                    return true;
                }
            });
    

      这部分代码想必使用过OnTouchListener的都不会陌生,不知大家对于其中哪个部分,我却是对“return true;”的疑问最大,为什么是true而不是false呢?其实如果创建的时候可以看到,系统默认生成的就是“return false”,但是只要我们去网上搜索OnTouchListener的相关博客的时候,十有八九都是返回“return true;”。而如果你很幸运,找到的是“return false”的,那么恭喜你,这篇博客你就用得上了。

    原来是return ActionUpActivity.super.onTouchEvent(event);实际上返回的时false,而这里如果返回false的话,Android系统将不会在通知该手势中的其他任何事件;如果想继续捕捉到其他手势事件,则这里就要返回一个true。

    因此可以理解onTouch方法的返回值,就是是否继续监听后续操作。true表示继续,所以监听到MotionEvent.ACTION_MOVE、MotionEvent.ACTION_UP;false表示不继续,所以只监听MotionEvent.ACTION_DOWN一个事件,则结束监听。

    相关文章

      网友评论

        本文标题:Android知识点(转)——Android onTouchEv

        本文链接:https://www.haomeiwen.com/subject/spkjwctx.html