Как создать карусель с помощью viewpager и адаптера fragmentStatePager

Я новичок в 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 с использованием PageContainer, не работающей с FragmentPagerAdapter Но для новичка вроде меня мало информации.




Ответы (3)


Для всех, кто сталкивается с этим, я использовал этот код для достижения довольно приятного эффекта.

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));
    }
});
person 92tonywills    schedule 06.06.2016

Вы можете воспользоваться помощью руководства Gamma Developer, чтобы сделать карусель.

Вот ссылка

person Sunil Kumar    schedule 08.07.2013
comment
Спасибо, Сунил, но я бы предпочел реализовать свою собственную карусель с нуля, но все равно спасибо за то, что поделились ссылкой - person bourne; 08.07.2013

Эй, не уверен, правильное ли это решение или нет, но я просто добавил одну строку

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

и теперь мой вид показывает также часть левого и правого фрагментов

person bourne    schedule 08.07.2013