Android event.getAction()永远不要使用MotionEvent.ACTION\u UP
我在OnTouchListener中遇到MotionEvent问题。Android event.getAction()永远不要使用MotionEvent.ACTION\u UP,android,motionevent,Android,Motionevent,我在OnTouchListener中遇到MotionEvent问题。ACTION\u DOWN工作正常,但从不使用ACTION\u UP 我真的不知道我的问题出在哪里,所以如果有人能帮我,那就太好了,谢谢 public class MainActivity extends Activity { View.OnTouchListener gestureListener; private static final int MIN_DISTANCE = 50; @Overri
ACTION\u DOWN
工作正常,但从不使用ACTION\u UP
我真的不知道我的问题出在哪里,所以如果有人能帮我,那就太好了,谢谢
public class MainActivity extends Activity {
View.OnTouchListener gestureListener;
private static final int MIN_DISTANCE = 50;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout layout = (LinearLayout) findViewById(R.id.layout);
layout.setOnTouchListener(new View.OnTouchListener() {
float downX = 0, downY;
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
switch(event.getAction()){
case MotionEvent.ACTION_DOWN :
downX = event.getX();
downY = event.getY();
Toast.makeText(getApplicationContext(), "action down", Toast.LENGTH_SHORT).show();
break;
case MotionEvent.ACTION_UP :
Toast.makeText(getApplicationContext(), "action up", Toast.LENGTH_SHORT).show();
float deltaX = downX - event.getX();
Toast.makeText(getApplicationContext(), Math.abs(deltaX)+"k", Toast.LENGTH_SHORT).show();
if (Math.abs(deltaX) > 3){
if(deltaX < 0) { onLeftToRightSwipe(); return true; }
if(deltaX > 0) { onRightToLeftSwipe(); return true; }
}
else {
String str = "Swipe was only " + Math.abs(deltaX) + " long, need at least " + MIN_DISTANCE;
Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show();
return false;
}
break;
}
return false;
}
});
}
private void onRightToLeftSwipe() {
Toast.makeText(getApplicationContext(), "Right Swipe", Toast.LENGTH_SHORT).show();
}
private void onLeftToRightSwipe() {
Toast.makeText(getApplicationContext(), "Left Swipe", Toast.LENGTH_SHORT).show();
}
}
公共类MainActivity扩展活动{
View.OnTouchListener手势Listener;
专用静态最终整数最小距离=50;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout布局=(LinearLayout)findViewById(R.id.layout);
layout.setOnTouchListener(新视图.OnTouchListener(){
向下浮动x=0,向下浮动;
@凌驾
公共布尔onTouch(视图v,运动事件){
//TODO自动生成的方法存根
开关(event.getAction()){
case MotionEvent.ACTION\u DOWN:
downX=event.getX();
downY=event.getY();
Toast.makeText(getApplicationContext(),“操作已停止”,Toast.LENGTH\u SHORT.show();
打破
case MotionEvent.ACTION\u UP:
Toast.makeText(getApplicationContext(),“动作向上”,Toast.LENGTH\u SHORT.show();
float deltaX=downX-event.getX();
Toast.makeText(getApplicationContext(),Math.abs(deltaX)+“k”,Toast.LENGTH_SHORT).show();
如果(数学绝对值(deltaX)>3){
如果(deltaX<0){onLeftToRightSwipe();返回true;}
如果(deltaX>0){onRightToLeftSwipe();返回true;}
}
否则{
String str=“Swipe只有”+Math.abs(deltaX)+“长,至少需要”+MIN\u距离;
Toast.makeText(getApplicationContext(),str,Toast.LENGTH_SHORT).show();
返回false;
}
打破
}
返回false;
}
});
}
private void onRightToLeftSwipe(){
Toast.makeText(getApplicationContext(),“右击”,Toast.LENGTH\u SHORT.show();
}
私有void onLeftToRightSwipe(){
Toast.makeText(getApplicationContext(),“左扫”,Toast.LENGTH\u SHORT.show();
}
}
如果在“操作”下将“假”返回到“操作”上,则不会收到“操作”上的通知
在Action_Down上返回true会告诉Android您希望继续接收此触摸事件的更新。返回false表示您不希望收到进一步的更新 刚刚测试了它并且工作得很好,下次我将在文档中阅读更多关于该函数的内容。真的帮了我,再次谢谢。