0

我正在创建一个 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 方法中放入什么。如果您知道一个很好的清晰演示,视频或书面,将不胜感激。如果您不关心编写这样的演示,那也将不胜感激。

4

1 回答 1

0

查看ViewPager类,看看它是否能满足您的需求。它允许您为内容的每个“页面”设置片段,并在它们之间滑动以切换,并支持您似乎正在描述的相同类型的过渡行为。

这是一篇包含更多信息的博客文章。

于 2012-12-28T18:12:33.483 回答