嘿,程序员——关于View点击事件传递

Activity——ViewGroup——View

1、默认情况
Activity:

@Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        Log.d("MainActivity","MainActivity dispatchTouchEvent");
        return super.dispatchTouchEvent(ev);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()){
            case MotionEvent.ACTION_DOWN:
                Log.d("MainActivity","MainActivity onTouchEvent down");
                break;
            case MotionEvent.ACTION_UP:
                Log.d("MainActivity","MainActivity onTouchEvent up");
                break;
            default:
                break;
        }
        return super.onTouchEvent(event);
    }

ViewGroup:

@Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        Log.d("MyViewGroup","MyViewGroup dispatchTouchEvent");
        return super.dispatchTouchEvent(ev);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        Log.d("MyViewGroup","MyViewGroup onInterceptTouchEvent");
        return super.onInterceptTouchEvent(ev);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()){
            case MotionEvent.ACTION_DOWN:
                Log.d("MyViewGroup","MyViewGroup onTouchEvent down");
                break;
            case MotionEvent.ACTION_UP:
                Log.d("MyViewGroup","MyViewGroup onTouchEvent up");
                break;
            default:
                break;
        }
        return super.onTouchEvent(event);
    }

View:

 @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        Log.d("MyView","MyView dispatchTouchEvent");
        return super.dispatchTouchEvent(ev);
    }


    @Override
    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()){
            case MotionEvent.ACTION_DOWN:
                Log.d("MyView","MyView onTouchEvent down");
                break;
            case MotionEvent.ACTION_UP:
                Log.d("MyView","MyView onTouchEvent up");
                break;
            default:
                break;
        }
        return super.onTouchEvent(event);
    }

事件传递:

捕获.PNG

2、Activity dispatchTouchEvent return true
事件传递:

捕获2.PNG

3、Activity dispatchTouchEvent return false
事件传递:

捕获2.PNG

4、ViewGroup dispatchTouchEvent return true
事件传递:

3.PNG

5、ViewGroup dispatchTouchEvent return false
事件传递:

4.PNG

6、ViewGroup onTouchEvent return true
事件传递:

5.PNG

7、ViewGroup onTouchEvent return false
事件传递:同1

8、ViewGroup onInterceptTouchEvent return true
事件传递:

6.PNG

9、ViewGroup onInterceptTouchEvent return false
事件传递:同1

10、View dispatchTouchEvent return true
事件传递:

7.PNG

11、View dispatchTouchEvent return false
事件传递:

8.PNG

12、View onTouchEvent return true
事件传递:

9.PNG

13、View onTouchEvent return false
事件传递:同1

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容