以编程方式滚动ViewPager

14

我有一个简单的ViewPager,是否可以通过常规动画每五秒钟以编程方式滚动它?

1个回答

34

查看 ViewPager.setCurrentItem(int) 方法,并结合使用 TimerTaskHandler

示例:

final ViewPager viewPager = ...;
final Handler h = new Handler(Looper.getMainLooper());
final Runnable r = new Runnable() { 
    public void run() {
        viewPager.setCurrentItem(0, true);
        h.postDelayed(r, 5000); 
    }
};
h.postDelayed(r, 5000); 

请确保在适当的时候取消这个可运行对象。


3
谢谢!我没想到这么容易。只需一个修正:你应该调用ViewPager.setCurrentItem(int, boolean)。 - Geralt_Encore
更新了带有代码的答案。确保你理解正在发生的事情,很容易泄漏东西。 - Jon Willis
4
请将 "h.postDelayed(r, 5000);" 改为 "h.postDelayed(this, 5000);"。 - Yousef Zakher
2
在方法run()中的行h.postDelayed(r, 5000);中,“r”是不可访问的。您可以将其更改为h.postDelayed(this, 5000);,因为它是您要访问的可运行方法。 - Osiriz
这对我不起作用,我正在使用VerticalPageViewer。 - Sarath Sadasivan Pillai
调用viewPager.setCurrentItem(0)就足够了,因为它默认提供了平滑的动画效果。 - Ε Г И І И О

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接