Android View的onTouch和onClick和onLongClick事件

Android View的onTouch和onClick和onLongClick事件

    博客分类: 
  • Android
Android onClick onLongClick onTouch 

Android系统有自己的事件处理逻辑,而应用开发大部分是在系统逻辑中添加Application逻辑。本文简要说明onTouch,onClick,onLongClick事件关系。

 

先看这三个事件的处理函数:

  1. public boolean onTouch(View v, MotionEvent event);
  2. public boolean onLongClick(View v);
  3. public void onClick(View v);

看到三个函数的返回值,只有onClick是void,而onTouch和onLongClick是boolean,原因是系统对这些事件的处理是有条件,必须满足条件才会触发相应的事件处理函数。

 

如果在onTouch和onLongClick都返回false并且长按View时,可以看到三个事件处理函数都会被调用,而且顺序有一定关系。代码如下:

Java代码   收藏代码
  1. @Override  
  2. public boolean onTouch(View v, MotionEvent event) {  
  3.     Toast.makeText(this"TOUCH", Toast.LENGTH_SHORT).show();  
  4.     return false;  
  5.   
  6. }  
  7.   
  8. @Override  
  9. public void onClick(View v) {  
  10.     Toast.makeText(this"CLICK", Toast.LENGTH_SHORT).show();  
  11. }  
  12.   
  13. @Override  
  14. public boolean onLongClick(View v) {  
  15.     Toast.makeText(this"LONG CLICK", Toast.LENGTH_SHORT).show();  
  16.     return false;  
  17. }  

 

事件在事件链中进行传递,如果一级没有处理,将向下一级传递,直到传遍整个事件链。

onTouch如果返回true,则表明对该事件做了处理,不会继续传递该事件在事件链中;onLongClick如果返回true,则表名对该事件做了处理,不会继续传递该事件在事件链中。

 

为了避免希望被响应的事件没有得到响应,需要对某些事件处理函数中控制事件是否继续传递。具体做法根据不同要求而有差别,在此不做说明了。

你可能感兴趣的:(Android View的onTouch和onClick和onLongClick事件)