我正在处理一个项目,我希望通过在屏幕上滑动手指从一个活动到另一个活动。从左到右擦拭意味着进入下一个活动。从右到左擦拭意味着回到之前的活动。并且因为我想重复使用这些功能,我不想每次都重复整个代码。
我用Google搜索并发现了 move activity to another activity using Finger
但由于缺乏完美的回答,它似乎没有太大帮助。
答案 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);
}
}