View中消息传递:onTouch() +onInterceptTouchEvent() + GestureDetector 学习

参考:http://blog.csdn.net/harvic880925/article/details/39520901
http://blog.csdn.net/lvxiangan/article/details/9309927

一、概述:

View类有个View.OnTouchListener内部接口,通过重写他的onTouch(View v, MotionEvent event)方法,我们可以处理一些touch事件,但无法完成不同手势的识别,所以引用了手势识别。

1、简单的复习一下View.OnTouchListener,它包含的触摸事件识别按下、移动和抬起。
2、onTouchEvent和onInterceptTouchEvent的理解。

onInterceptTouchEvent决定是否允许Touch事件继续向下(子控件)传递,一但返回True(代表事件在当前的viewGroup中会被处理),则向下传递之路被截断(所有子控件将没有机会参与Touch事件),同时把事件传递给当前的控件的onTouchEvent()处理;返回false,则把事件交给子控件的onInterceptTouchEvent()
OnTouchListener当前控件在处理完Touch事件后,是否还允许Touch事件继续向上(父控件)传递。返回false,则向上传递给父控件,详细一点就是这个touch事件就给了父控件,那么后面的up事件就是到这里touch触发,不会在传给它的子控件。如果父控件依然是false,那touch的处理就给到父控件的父控件,那么up的事件处理都在父控件的父控件,不会触发下面的。返回true,如果是子控件返回true,那么它的touch事件都在这里处理,父控件是处理不了,因为它收不到子控件传给他的touch,被子控件给拦截了。
我的理解是:返回true,消耗了该事件,就不再传递。返回false,未消耗该事件,会将事件传递下去

    @Override
    public boolean onTouchEvent(MotionEvent ev) { // 屏蔽touch事件,才能在监听其子控件的touch事件
        super.onTouchEvent(ev);
        return false;//与父控件,自己处理收是否向上传递该事件
    }

    @Override  
    public boolean onInterceptTouchEvent(MotionEvent event)// 屏蔽touch事件传递,才能在监听其子控件的touch事件
    {  
        super.onInterceptTouchEvent(event);  
        return false;  //决定Touch事件是否向子控件传递,未消费,给子控件的该方法
    } 

实验一:OnTouchEvent()事件学习

public class 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值