Как добиться этого с помощью viewpager2? - PullRequest
0 голосов
/ 05 мая 2020

Я разрабатываю образец макета, где мне нужно создать дизайн с использованием viewpager2 и успешно достичь определенного уровня, но мне нужно немного изменить, чтобы завершить финальную головоломку.

Я хочу дизайн

образец дизайна

В итоге я получил вот такое изображение в viewpager2

текущий результат

activity_main. xml

        <androidx.viewpager2.widget.ViewPager2
            android:id="@+id/viewpageimageSlider"
            android:layout_width="match_parent"
            android:layout_height="285dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

slideAdapter. xml:

 <?xml version="1.0" encoding="utf-8"?>
    <com.makeramen.roundedimageview.RoundedImageView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/slideImage"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </com.makeramen.roundedimageview.RoundedImageView>

MainActivity. java:

sliderItemBeans.add(new SliderItemBean(R.drawable.plateofcarrot));
        sliderItemBeans.add(new SliderItemBean(R.drawable.bread));
        sliderItemBeans.add(new SliderItemBean(R.drawable.cucumber));
        sliderItemBeans.add(new SliderItemBean(R.drawable.vegetables));
        sliderItemBeans.add(new SliderItemBean(R.drawable.donuts));
        viewPager2.setAdapter(new SliderAdapter(sliderItemBeans, viewPager2));

        viewPager2.setOffscreenPageLimit(1);
        viewPager2.getChildAt(0).setOverScrollMode(RecyclerView.OVER_SCROLL_ALWAYS);


        float pageMargin = getResources().getDimensionPixelOffset(R.dimen.pageMargin);
        float pageOffset = getResources().getDimensionPixelOffset(R.dimen.offset);

        viewPager2.setPageTransformer((page, position) -> {
            float myOffset = position * -(2 * pageOffset + pageMargin);
            if (position < -1) {
                page.setTranslationX(-myOffset);
            } else if (position <= 1) {
                float scaleFactor = Math.max(0.7f, 1 - Math.abs(position - 0.14285715f));
                page.setTranslationX(myOffset);
                page.setScaleY(scaleFactor);
                page.setAlpha(scaleFactor);
            } else {
                page.setAlpha(0);
                page.setTranslationX(myOffset);
            }
        });
        viewPager2.setPageTransformer(compositePageTransformer);
        viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
            @Override
            public void onPageSelected(int position) {
                super.onPageSelected(position);
                sliderHandler.removeCallbacks(sliderRunnable);
                sliderHandler.postDelayed(sliderRunnable, 3000);//slide duration
            }
        });

Спросите если что-то нужно в коде Спасибо

1 Ответ

0 голосов
/ 05 мая 2020

Этот является официальным примером проекта android для ViewPager2, возможно, это может вам помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...