首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓MotionEvent.ACTION_MOVE和MotionEvent.ACTION_UP

安卓MotionEvent.ACTION_MOVE和MotionEvent.ACTION_UP
EN

Stack Overflow用户
提问于 2017-08-03 19:42:02
回答 1查看 1.2K关注 0票数 0

我试图为我的列表视图项目实现卷帘,我有隐藏元素(如按钮),我想向左/右滑动显示此按钮的项目。一切都运行得很完美。除了我不能正常点击项目或按钮。因为event MotionEvent.ACTION_UP总是被触发。当我只是简单地点击/触摸项目时记录

代码语言:javascript
复制
 Action DOWN
 OLD X = -329.0
 DX = -329.0
 MOVE RIGHT
 OLD X = -329.0
 DX = -330.5
 MOVE RIGHT
 OLD X = -329.0
 DX = -330.95996
 MOVE RIGHT
 Action UP

有什么可以帮我的吗?有关单击项目的信息,我尝试使用此代码

代码语言:javascript
复制
float cx = event.getX();
  if(cx<width && cx>(width-150)) {

和我的代码

代码语言:javascript
复制
swipeLayout.setOnTouchListener(new View.OnTouchListener() {
            private boolean canClick = false;


            @Override
            public boolean onTouch(View view, MotionEvent event) {
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        x1 = event.getX();
                        dX = view.getX() - event.getRawX();
                        dY = view.getY() - event.getRawY();
                        Logger.e("Action DOWN");
                        oldX = dX;
                        return true;
                    case MotionEvent.ACTION_MOVE:

                        Logger.e("OLD X = " + oldX);
                        Logger.e("DX = " + dX);
                        dX = view.getX() - event.getRawX();
                        if (oldX < dX) {
                            Logger.e("MOVE LEFT");
                            view.animate().x(-100).setDuration(50).start();
                            break;
                        }

                        if (oldX > dX) {
                            Logger.e("MOVE RIGHT");
                            view.animate().x(0).setDuration(50).start();
                            break;
                        }


                    case MotionEvent.ACTION_UP:
                        Logger.e("Action UP");
                }
                return false;
            }
        });
EN

回答 1

Stack Overflow用户

发布于 2017-08-03 19:48:11

考虑使用GestureDetector来处理滑动。下面是一个可能的例子:

代码语言:javascript
复制
new GestureDetector(context, new GestureDetector.SimpleOnGestureListener(){
            @Override
            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
                    float velocityY) {
                // Here you handle short quick swipe gesture
                return super.onFling(e1, e2, velocityX, velocityY);
            }

            @Override
            public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
                    float distanceY) {
                // Here you handle slow finger movement across the screen
                return super.onScroll(e1, e2, distanceX, distanceY);
            }
        });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45483175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档