ViewPager TransFormer

来源:互联网 发布:天通金交易软件下载 编辑:程序博客网 时间:2024/05/19 21:02

ViewPager TransFormer

mViewPager.setPageTransformer(false, new ZoomOutPageTransformer());

public class DepthPageTransformer implements ViewPager.PageTransformer {private static final float MIN_SCALE = 0.85f;@Overridepublic void transformPage(View view, float position) {int pageWidth = view.getWidth();if (position < -1) { // [-Infinity,-1)// This page is way off-screen to the left.view.setAlpha(0);} else if (position <= 0) { // [-1,0]// Fade the page out.view.setAlpha(1 - position);// Counteract the default slide transitionview.setTranslationX(pageWidth * -position);// Scale the page down (between MIN_SCALE and 1)float scaleFactor = MIN_SCALE + (1 - MIN_SCALE)* (1 - Math.abs(position));view.setScaleX(scaleFactor);view.setScaleY(scaleFactor);} else if (position <= 1) { // (0,1]view.setVisibility(View.VISIBLE);view.setAlpha(1 - position);// Counteract the default slide transitionview.setTranslationX(pageWidth * -position);// Scale the page down (between MIN_SCALE and 1)float scaleFactor = MIN_SCALE + (1 - MIN_SCALE)* (1 - Math.abs(position));view.setScaleX(scaleFactor);view.setScaleY(scaleFactor);// 修复一个bug,viewPage后一个界面会与当前页重叠,当淡出时候,需要去使能if (position == 1) {view.setVisibility(View.GONE);}} else { // (1,+Infinity]// This page is way off-screen to the right.view.setAlpha(0);}}}public class ZoomOutPageTransformer implements ViewPager.PageTransformer {    private static final float MIN_SCALE = 0.9f;     private static final float MIN_ALPHA = 0.8f;     @Override    public void transformPage(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(0);        } else if (position <= 1) { // [-1,1]                                    // Modify the default slide transition to                                    // shrink the page as well            float 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(0);        }    }}



0 0