使用手指滑动从一个活动移动到下一个活动。 (Android项目)

时间:2016-06-13 10:43:43

标签: android swipe-gesture

我正在处理一个项目,我希望通过在屏幕上滑动手指从一个活动到另一个活动。从左到右擦拭意味着进入下一个活动。从右到左擦拭意味着回到之前的活动。并且因为我想重复使用这些功能,我不想每次都重复整个代码。

我用Google搜索并发现了 move activity to another activity using Finger

但由于缺乏完美的回答,它似乎没有太大帮助。

2 个答案:

答案 0 :(得分:1)

不要创建这么多活动,为什么不考虑将View Pager与Fragment Pager Adapter一起使用。

您将有多个片段,可在右侧滑动和向左滑动时使用。它也会非常有效。你将能够看到动画。

但是在活动的情况下,您必须检测滑动,然后启动另一个活动。

另外,请看下面的链接: How to implement a ViewPager with different Fragments / Layouts

答案 1 :(得分:0)

您应该实施OnTouchListener并在onCreate方法中进行设置。

view.setOnTouchListener(new MyOnTouchListener(this));

以下是听众:

public class MyOnTouchListener extends View.OnTouchListener { 
   final GestureDetector gesture;

   public MyOnTouchListener(Activity activity) {
       gesture = new GestureDetector(activity, new MyGestureListener());
   }

   @Override
   public boolean onTouch(View v, MotionEvent event) {
       return gesture.onTouchEvent(event);
   }  
}

public class MyGestureListener extends GestureDetector.SimpleOnGestureListener {

    @Override
    public boolean onDown(MotionEvent e) {
        return true;
    }

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        final int SWIPE_MIN_DISTANCE = 120;
        final int SWIPE_MAX_OFF_PATH = 250;
        final int SWIPE_THRESHOLD_VELOCITY = 200;

        try {
            if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) {
                return false;
            }

            if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
                // TODO action for right to left swipe
            } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
                // TODO action for left to right swipe
            }
        } catch (Exception e) {
            // nothing
        }

        return super.onFling(e1, e2, velocityX, velocityY);
    }
}