android - 如何自动滑动android View Pager

标签 android android-viewpager

能否将 View Pager 设置为自动滑动或自动翻页。我将我的 viewpager 设置为使用如下所示的适配器,它工作正常:-

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.gridslide);
ImagePagerAdapter mAdapter = new ImagePagerAdapter(
        getSupportFragmentManager(),4);
ViewPager mPager = (ViewPager) findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
}

适配器如下所示:-

public static class ImagePagerAdapter extends FragmentStatePagerAdapter {
private final int mSize;

public ImagePagerAdapter(FragmentManager fm, int size) {
    super(fm);
    mSize = size;
}

@Override
public int getCount() {
    return mSize;
}
@Override
public Fragment getItem(int position) {
    Log.v(TAG,"position="+position);
    return TheFragment.newInstance(position);
}}

但是我想知道如何让这些 fragment 在 viewpager 中自动滑动。

最佳答案

在 setCurrentItem(int item, boolean smoothScroll) 中设置 smoothScroll = true 并不总是具有平滑滚动效果。假设如果您的 viewpager 中的页面少于 5 个,您几乎不会注意到平滑的滚动。

在这种情况下,最困难的方法是将其放入for循环中

//This will scroll page-by-page so that you can view scroll happening
for (int i = 0; i < mAdapter.getCount()-1; i++)
    mPager.setCurrentItem(i, true);

如果有人需要更慢的滚动,他们可以像这样使用 postDelayed()...

static int i=0;
private final Handler handler = new Handler();
somefunction()
{
    handle.post(ViewPagerVisibleScroll);
}

    Runnable ViewPagerVisibleScroll= new Runnable() {
                @Override
                public void run() {
                    if(i <= mAdapter.getCount()-1)
                    {
                        mPager.setCurrentItem(i, true);
                        handle.postDelayed(TopChartAnimation, 100);
                        i++;
                    }
                }
            };

总是不推荐 sleep :如果有人需要更慢的滚动,他们可能会在这个 for 循环中使用 sleep ...

@Override
public void onClick(View v) {
Runnable runnable = new Runnable() {
                @Override
                public void run() {
                    for (int i = 0; i < mAdapter.getCount()-1; i++) {
                        final int value = i;
                        try {
                            Thread.sleep(50);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        handler.post(new Runnable() {
                            @Override
                            public void run() {
                                mPager.setCurrentItem(value, true);
                            }
                        });
                    }
                }
            };
            new Thread(runnable).start();

        }

关于android - 如何自动滑动android View Pager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11698987/

相关文章:

java - Android Java - OnCreate 中的竞争条件,带有两个观察者并制作列表

java - 更改 RecyclerView 中每隔一个元素的颜色

java - 在 android 中禁用多选列表首选项中的复选框单击

Android ViewPager 类似 instagram 照片 Activity

c# - 获取 ViewPager fragment 中的当前索引

android - (Unit)ArrayAdapter的测试

android - ViewPager 使用 fragment 更新屏幕外 View 而不是主视图

android - ViewPager 内的 WebView 故障 : scrolls like sliding a stack of cards

android - 内部 fragment 的回溯

android - Android TextView 的 autoLink ="all"功能