如何实现这个使用viewpager2?

问题描述 投票:0回答:1

我正在设计一个样板布局,我必须在其中使用 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.MainActivity.java:1.0

 <?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
            }
        });

如果有什么需要,请在代码中提出,谢谢

android
1个回答
0
投票

这个 是安卓的官方样板工程,用于 ViewPager2 也许这可以帮助你。

© www.soinside.com 2019 - 2024. All rights reserved.