event.getAction()从不使用MotionEvent.ACTION_UP

 火云邪神 发布于 2023-02-13 10:04

我在OnTouchListener中遇到MotionEvent问题.ACTION_DOWN完美的工作,但它永远不会使用ACTION_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();
    }


}

Tim.. 11

如果onTouch在Action_Down上返回false ,则不会收到Action_Up的通知.

在Action_Down上返回true告诉Android您要继续接收此触摸事件的更新.返回false告诉它您不希望再接收更新.

1 个回答
  • 如果onTouch在Action_Down上返回false ,则不会收到Action_Up的通知.

    在Action_Down上返回true告诉Android您要继续接收此触摸事件的更新.返回false告诉它您不希望再接收更新.

    2023-02-13 10:08 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有