一、viewPager+Fragment
通常我们会将这两个进行组合,实现一些特殊的效果,那么如何实现fragment进行切换时的动画呢。
//添加切换动画 mViewPager.setPageTransformer(true , new ZoomOutViewPageTransformer());//实现ViewPager提供的接口 实现动画效果 public class ZoomOutViewPageTransformer implements ViewPager.PageTransformer { private static final float MIN_SCALE = 0.80f;//最小的比例 private static final float MIN_ALPHA = 0.5f;//最小的透明值//最低的版本为---> 11 @TargetApi(Build.VERSION_CODES.HONEYCOMB) @Override public void transformPage(View page, float position) { int pageWidth = page.getWidth();//获取到宽度 int pageHeight = page.getHeight();//获取到高度 //判断当前的页面的位置进行动画的设置 if (position < -1) { page.setAlpha(0); } else if (position <= 1) { float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position)); float vertMargin = pageHeight * (1 - scaleFactor) / 2; float horMargin = pageWidth * (1 - scaleFactor) / 2; if (position < 0) { page.setTranslationX(horMargin - vertMargin / 2); } else { page.setTranslationX(-horMargin + vertMargin / 2); } page.setScaleX(scaleFactor); page.setScaleY(scaleFactor); //设置透明度 page.setAlpha(MIN_ALPHA + (scaleFactor - MIN_SCALE) / (1 - MIN_SCALE) * (1 - MIN_ALPHA)); } else { page.setAlpha(0); } } }