我正在设计一个样板布局,我必须在其中使用 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
}
});
如果有什么需要,请在代码中提出,谢谢
这个 是安卓的官方样板工程,用于 ViewPager2
也许这可以帮助你。