gpt4 book ai didi

android - 如何创建轮播ViewPager?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:00:53 25 4
gpt4 key购买 nike

我只想在 Android 中做一个水平旋转木马。

如果我有 3 个屏幕 A B 和 C,那么我希望我的 ViewPager 允许我移动A <-> B,B <-> C,C <-> A.

GTalk for Android 的对话可以这样切换。三星的主屏幕和应用屏幕可以这样切换。

A B 和 C 是 fragment ,我正在使用扩展 FragmentPagerAdapter 的适配器。所有 fragment 都将包含一个 webview。

我看过here here在这里,但他们似乎都没有按照我的意愿去做。

谁能指导我正确的方向?

最佳答案

(交叉发布 my answer 来自相同的 StackOverflow 问题)

一种可能性是像这样设置屏幕:

C' A B C A'

C' 看起来就像 C,但是当你滚动到那里时,它会将你切换到真正的 C。A' 看起来就像 A,但是当您滚动到那里时,它会将您切换到真正的 A。

我会通过实现 onPageScrollStateChanged 来做到这一点像这样:

@Override
public void onPageScrollStateChanged (int state) {
if (state == ViewPager.SCROLL_STATE_IDLE) {
int curr = viewPager.getCurrentItem();
int lastReal = viewPager.getAdapter().getCount() - 2;
if (curr == 0) {
viewPager.setCurrentItem(lastReal, false);
} else if (curr > lastReal) {
viewPager.setCurrentItem(1, false);
}
}
}

请注意,这调用了 setCurrentItem 的替代形式并传递 false 使跳转立即发生而不是平滑滚动。

我认为这有两个主要缺点。首先,到达任一端后,用户必须让滚动稳定下来才能继续。其次,这意味着在您的第一页和最后一页中拥有所有 View 的第二个副本。根据您的屏幕的资源密集程度,可能会排除此技术作为可能的解决方案。

另请注意,由于 View 分页器在滚动稳定之前不会让点击进入底层控件,因此不为 A' 和 C' fragment 设置点击监听器等可能没问题。

编辑:现在我自己实现了这个,还有另一个相当大的缺点。当它从 A' 切换到 A 或从 C' 切换到 C 时,屏幕会闪烁片刻,至少在我目前的测试设备上是这样。

关于android - 如何创建轮播ViewPager?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9259627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com