问题描述:
在Android应用中有一个页面存在两个按钮(btn1,btn2),分别有一个点击事件逻辑。现在要求使用两个手指头同时点击屏幕上这两个按钮的时候不要同时执行点击操作,否则会造成两个事件的冲突。
解决思路:
使用事件分发机制,在触摸屏幕的时候判断是否是多点触控,如果超过2个点则拦截所有点击事件。如果只有一个点触摸屏幕则正常响应按钮点击即可。
实例代码:
package com.zp.mytouchdemo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
Button btn_click;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_click = (Button) findViewById(R.id.btn_click);
btn_click.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "click", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.i("my", "start Touch---");
if (event.getPointerCount() == 2) {
Log.i("my", "获得两点的坐标,此时禁止点击事件传递");
//true,则拦截所有点击事件,按钮的点击事件不会被执行
return true;
}
return false;
}
}