我正在创建一个 Android 应用程序,并希望提供几种可以通过投掷来切换的布局(如 Android 主屏幕)。我使用以下代码获得了要切换的布局:
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE) {
//vFlipper is a ViewFlipper, but it is not important for me to have it. As long as I can display several layouts and switch them by thumb touch, in a way that the layout will follow the thumb, that's fine.
if (vFlipper.getDisplayedChild() == 0)
return false;
vFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.left_in));
vFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.left_out));
vFlipper.showPrevious();
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE) {
if (vFlipper.getDisplayedChild() == vFlipper.getChildCount() - 1)
return false;
vFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.right_in));
vFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.right_out));
vFlipper.showNext();
}
return true;
}
但这并不像主屏幕那样工作。在主屏幕上,您可以将屏幕拉到一边并看到它在移动,而不必完成投掷和切换屏幕。屏幕随着您的拇指移动。我的代码检查一个完整的投掷手势,然后触发切换和动画。现在我意识到一个完整的解决方案可能会放弃 GestureDetector 和 onFling 方法并使用 onMove 事件,但我不知道如何实现它以及在 onMove 方法中放入什么。如果您知道一个很好的清晰演示,视频或书面,将不胜感激。如果您不关心编写这样的演示,那也将不胜感激。