Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android event.getAction()永远不要使用MotionEvent.ACTION\u UP_Android_Motionevent - Fatal编程技术网

Android event.getAction()永远不要使用MotionEvent.ACTION\u UP

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

我在OnTouchListener中遇到MotionEvent问题。
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表示您不希望收到进一步的更新

刚刚测试了它并且工作得很好,下次我将在文档中阅读更多关于该函数的内容。真的帮了我,再次谢谢。