我正在处理一个项目,我想通过在屏幕上滑动手指从一个活动转到另一个活动。从左向右滑动意味着转到下一个活动。从右向左滑动意味着返回到以前的活动。由于我想重复使用这些功能,因此我不想每次都重复整个代码。
我用谷歌搜索过它,发现使用手指将活动移动到另一个活动
但由于缺乏完美的安斯,它似乎并没有太大的帮助。
与其创建这么多活动,不如考虑将 View Pager 与片段寻呼机适配器一起使用。
您将有多个片段,这些片段将在右滑动和左滑动时可用。它也将非常有效。您将能够看到动画。
但是,如果发生活动,则必须检测滑动,然后启动另一个活动。
另外,请查看以下链接:如何实现具有不同片段/布局的ViewPager
您应该实现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);
}
}