美文网首页
View事件的传递

View事件的传递

作者: 初心一点 | 来源:发表于2019-01-06 20:12 被阅读6次

其实Android要学或下功夫理解的东西(常用的重要的),说到底东西不多也不少

  • 今天把View事件的传递写几篇笔记吧(系列)
  • 这篇日记就一个目的:View的onClick事件是在onTouch事件之后才调用的,并且调用与否跟onTouch的返回值有关系。
/**
 * -----------------------------------------------------------------
 * Copyright (C) 2014-2016, by com.trident, All rights reserved.
 * -----------------------------------------------------------------
 * <p>
 * Author: aaron
 * <p>
 * Create: 2018/8/21 下午5:22
 * <p>
 * Description:
 */
public class TouchAct extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.act_touch);

        // 如果将这里改为ImageView,由于ImageView默认不可点击,所以在走onTouchEvent事件时,返回false导致后续
        // click事件不会继续走下去
        // 强烈建议这里自己换成ImageView打印日志看下就明白了
        Button button = findViewById(R.id.button);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d("TAG", "onClick execute");
            }
        });

        button.setOnTouchListener(new View.OnTouchListener() {

            // onTouch 返回true就认为这个事件被onTouch消费掉了,因而不会再继续向下传递,因此不会调用onClick
            // 返回false就认为这个事件继续往下传递,会调用onClick
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                Log.d("TAG", "onTouch execute, action " + event.getAction());

                // 这里返回false在看下效果
                // 这里强推郭霖的View事件传递的2篇文章,仔细琢磨琢磨
                // https://blog.csdn.net/guolin_blog/article/details/9097463
                return true;
            }
        });


    }

}

我截取的代码是直接可以新建个小工程,方便调试的,至于里面的id,xml,自己新建下就好了

相关文章

网友评论

      本文标题:View事件的传递

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