这样我们通过ViewHelper来替代我们的属性动画属性,来处理我们3.0以前版主不支持属性动画的问题,当我们运行后发现,3.0以后的版本还是没有效果,这是什么原因呢?我们打开ViewPager的源代码发现里面有一句判断:
  if (Build.VERSION.SDK_INT >= 11) //Android版本判断
  对这个是罪魁祸首,当我们的版本低于3.0时,我们的动画效果代码根本得不到执行,所以如果想要解决这个问题,我们需要从写这个类。把里面setPageTransformer()里面的版本判断进行一下注释;
public void setPageTransformer(boolean reverseDrawingOrder, ViewPager.PageTransformer transformer) {
//if (Build.VERSION.SDK_INT >= 11) //Android版本判断
{
final boolean hasTransformer = transformer != null;
final boolean needsPopulate = hasTransformer != (mPageTransformer != null);
mPageTransformer = transformer;
setChildrenDrawingOrderEnabledCompat(hasTransformer);
if (hasTransformer) {
mDrawingOrder = reverseDrawingOrder ? DRAW_ORDER_REVERSE : DRAW_ORDER_FORWARD;
} else {
mDrawingOrder = DRAW_ORDER_DEFAULT;
}
if (needsPopulate) populate();
}
}
  然后我们需要把里面的布局文件进行一下更改:
  <com.example.android_viewpager.ViewPagerCompate
  android:id="@+id/viewPager"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
  </com.example.android_viewpager.ViewPagerCompate>
  然后把MainActivity进行一些更改:
  mViewPager = (ViewPagerCompate) findViewById(R.id.viewPager);//修改系统提供的
  这样我们刚刚修改的效果可以在3.0以后的版本显示出来了,是不是感觉很神奇。后我在为大家介绍一个效果:
public class RotateDownPagetransformer implements ViewPager.PageTransformer {
private static final float MAX_ROTATE = 20F;
private static float ROTATE = 0F;
/*
* 效果分析:
* 滑动可以分解为:A>B
* A的position:0.0 >> -1.0
* B的position:1.0 >> 0.0
* (non-Javadoc)
* @see android.support.v4.view.ViewPager.PageTransformer#
* transformPage(android.view.View, float)
*/
@Override
public void transformPage(View view, float position) {
int pageWidth = view.getWidth();
if (position < -1) { // [-Infinity,-1)
ViewHelper.setAlpha(view, 0);//设置透明度
} else if (position <= 0) { // A页position:0.0 >> 1.0
//计算旋转角度
ROTATE = MAX_ROTATE * position;
//设置旋转中心
ViewHelper.setPivotX(view, pageWidth/2);
ViewHelper.setPivotY(view, view.getMeasuredHeight());
//设置选择角度
ViewHelper.setRotation(view, ROTATE);
} else if (position <= 1) { // B页position:1.0 >> 0.0
//计算旋转角度
ROTATE = MAX_ROTATE * position;
//设置旋转中心
ViewHelper.setPivotX(view, pageWidth/2);
ViewHelper.setPivotY(view, view.getMeasuredHeight());
//设置选择角度
ViewHelper.setRotation(view, ROTATE);
} else { // (1,+Infinity]
ViewHelper.setAlpha(view, 0);
}
}
}
  这是一个类似于扇形的切换效果,好了对于ViewPager的切换动画已经为大家介绍完毕,内容较多,大家有什么疑问可以留言交流。