packagecom.example.demo_viewpager2;importandroid.view.View;importandroidx.viewpager2.widget.ViewPager2;publicclassZoomOutPageTransformerimplementsViewPager2.PageTransformer{privatestaticfinalfloat MIN_SCALE =0.85f;privatestaticfinalfloat MIN_ALPHA =0.5f;publicvoidtransformPage(View view,float position){int pageWidth = view.getWidth();int pageHeight = view.getHeight();if(position <-1){// [-Infinity,-1)// This page is way off-screen to the left.
view.setAlpha(0f);}elseif(position <=1){// [-1,1]// Modify the default slide transition to shrink the page as wellfloat scaleFactor =Math.max(MIN_SCALE,1-Math.abs(position));float vertMargin = pageHeight *(1- scaleFactor)/2;float horzMargin = pageWidth *(1- scaleFactor)/2;if(position <0){
view.setTranslationX(horzMargin - vertMargin /2);}else{
view.setTranslationX(-horzMargin + vertMargin /2);}// Scale the page down (between MIN_SCALE and 1)
view.setScaleX(scaleFactor);
view.setScaleY(scaleFactor);// Fade the page relative to its size.
view.setAlpha(MIN_ALPHA +(scaleFactor - MIN_SCALE)/(1- MIN_SCALE)*(1- MIN_ALPHA));}else{// (1,+Infinity]// This page is way off-screen to the right.
view.setAlpha(0f);}}}