码迷,mamicode.com
首页 > 移动开发 > 详细

android事件传递机制

时间:2015-08-10 16:23:01      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:

事件的基础:按下,移动,抬起。

首先执行的是按下,其次可能执行的是移动,最后执行的抬起。

 

android事件传递机制:

android事件传递按上到下进行层级传递,事件处理从 activity 到 viewGroup 再到 view.

 

view和viewGroup对事件的响应方法(即传递方法):


dispatchTouchEvent():  对事件的分发。     return     true,    不继续分发。   

                                                              return     false,继续往下一层级分发

onTouchEvent():          对事件的处理。      return    true    表示消费处理当前事件,

                                                              return    false    则不处理,交给子控件进行继续分发

onInterceptTouchEvent():对事件的拦截           (注意点:viewGroup才有)
                                         return       true       拦截当前事件,不继续往下分发,交给自身的onTouchEvent进行处理。

                                         return       false    则不拦截,继续往下传。

 

1.onTouch事件要先于onClick事件执行
2.onTouch在事件分发方法dispatchTouchEvent中调用,
3.而onClick在事件处理方法onTouchEvent中被调用
4.onTouchEvent()要后于dispatchTouchEvent方法的调用

 

小案例:双击退出

/*
  * 双击退出的原理:
  * 通过一个变量来判断,
  * handler.postDelayed():延迟多久时间后恢复变量的原来状态
  */
 boolean is2CallBack=false;
 @Override
 public boolean onKeyDown(int keyCode, KeyEvent event) {

          if(keyCode==KeyEvent.KEYCODE_BACK){
                    if(!is2CallBack){
                           is2CallBack=true;
                          Toast.makeText(MainActivity.this, "再次点击退出",Toast.LENGTH_SHORT).show();
                           new Handler().postDelayed(new Runnable() {
                                   public void run() {
                                       is2CallBack=false;
                                   }
                           }, 3*1000);
            }
           else{
                 android.os.Process.killProcess(android.os.Process.myPid());
           }
  }
  return true;
 }

android事件传递机制

标签:

原文地址:http://my.oschina.net/u/2406195/blog/490185

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!