2

我是 android 新手,我正在尝试在 android 中创建一个轮播。我的班级结构如下

public class PageViewActivity extends FragmentActivity {

    ViewPager pager;
    ...

    public void onCreate(Bundle savedInstanceState) {
       final ViewPager pager = (ViewPager) findViewById(R.id.pager);
       MyPageAdapter pageAdapter = new MyPageAdapter(getSupportFragmentManager(),getBaseContext());
       pager.setAdapter(pageAdapter);
    }

...

public class MyPageAdapter extends FragmentStatePagerAdapter {

    @Override
    public ImageFragment getItem(int position) {
       ...
       return fragment;
    }

    @Override
    public int getCount() {
       return 10;
    }
}

现在我的程序工作正常,我可以通过向左或向右滑动来获取 10 个片段。但我想将这 10 个片段显示为轮播,以便用户更好地了解当前位置的左侧或右侧还有更多片段。

有人可以告诉我该怎么做。

我确实发现这个 url ViewPager carousel using PageContainer not working with FragmentPagerAdapter但对于像我这样的初学者来说没有太多信息。

4

3 回答 3

6

对于遇到此问题的其他人,我使用此代码来实现非常好的效果。

pager.setPageMargin((int) (getResources().getDisplayMetrics().widthPixels * -0.33));
pager.setOffscreenPageLimit(5);
pager.setPageTransformer(false, new ViewPager.PageTransformer() {
    @Override public void transformPage(View page, float position) {
        page.setScaleX(0.7f - Math.abs(position * 0.4f));
        page.setScaleY(0.8f - Math.abs(position * 0.6f));
        page.setAlpha(1.0f - Math.abs(position * 0.5f));
    }
});
于 2016-06-06T23:34:13.723 回答
1

您可以从 Gamma 开发人员指南中获取帮助来制作轮播。

这是链接

于 2013-07-08T05:39:54.710 回答
1

嘿,不确定这是否是一个合适的解决方案,但我只是添加了一行

 pager.setPageMargin(getResources().getDisplayMetrics().widthPixels /-7);

现在我的视图也显示了左右片段的一部分

于 2013-07-08T06:27:38.727 回答