[mobilesafe] 14_触摸事件和点击事件

Android 4.0

未命名
在Android中,onClick、onLongClick的触发是和ACTION_DOWN及ACTION_UP相关的,在时序上,如果我们在一个View中同时覆写了onClick、onLongClick及onTouchEvent的话,onTouchEvent是最先捕捉到ACTION_DOWN和ACTION_UP事件的,其次才可能触发onClick或者onLongClick。
核心代码: package  cn.zengfansheng.touchandclick;
 
import  android.app.Activity;
import  android.os.Bundle;
import  android.util.Log;
import  android.view.MotionEvent;
import  android.view.View;
import  android.view.View.OnClickListener;
import  android.view.View.OnLongClickListener;
import  android.view.View.OnTouchListener;
import  android.widget.Button;
 
public   class  MainActivity  extends  Activity {
 
     protected   static   final  String TAG  =   "MainActivity" ;
     private  Button bt;
    @Override
     protected   void  onCreate(Bundle savedInstanceState) {
         super .onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        bt  =  (Button)  this .findViewById(R.id.bt);
 
         // 1、单击事件
        bt.setOnClickListener( new  OnClickListener() {
 
            @Override
             public   void  onClick(View v) {
                Log.i(TAG,  "单击了" );
            }
        });
 
         // 2、触摸事件
        bt.setOnTouchListener( new  OnTouchListener() {
 
            @Override
             public   boolean  onTouch(View v, MotionEvent event) {
                 switch  (event.getAction()) {
                 case  MotionEvent.ACTION_DOWN :
                    Log.i(TAG,  "MotionEvent.ACTION_DOWN、、、" );
                     break ;
                 case  MotionEvent.ACTION_MOVE :
                    Log.i(TAG,  "MotionEvent.ACTION_MOVE、、、" );
                     break ;
                 case  MotionEvent.ACTION_UP :
                    Log.i(TAG,  "MotionEvent.ACTION_UP、、、" );
                     break ;
                }
                 return  true;
            }
        });
         // 3、长按事件
        bt.setOnLongClickListener( new  OnLongClickListener() {
 
            @Override
             public   boolean  onLongClick(View v) {
                Log.i(TAG,  "LongClick..." );
                 return  true;
            }
        });
    }
}
结果:

只响应了触摸事件,点击事件和长点击事件并没有响应