Android 自定义 ViewPager 打造千变万化的图片切换效(3)

protected void animateStack(View left, View right, float effectOffset,
   int positionOffsetPixels)
 {
  if (right != null)
  {
   /**
    * 缩小比例 如果手指从右到左的滑动(切换到后一个):0.0~1.0,即从一半到最大
    * 如果手指从左到右的滑动(切换到前一个):1.0~0,即从最大到一半
    */
   mScale = (1 - SCALE_MAX) * effectOffset + SCALE_MAX;
   /**
    * x偏移量: 如果手指从右到左的滑动(切换到后一个):0-720 如果手指从左到右的滑动(切换到前一个):720-0
    */
   mTrans = -getWidth() - getPageMargin() + positionOffsetPixels;
   ViewHelper.setScaleX(right, mScale);
   ViewHelper.setScaleY(right, mScale);
   ViewHelper.setTranslationX(right, mTrans);
  }
  if (left != null)
  {
   left.bringToFront();
  }
 }
}

可以看到,核心代码都是onPageScrolled,我们通过findViewFromObject(position); findViewFromObject(position + 1);分别获取了左右两边的View,然后添加动画效果;当前这个例子添加了两个动画,一个是从0.5放大到1.0或者1.0缩小到0.5,没错由我们的positionOffset提供梯度的变化~~还有个平移的动画:下一页直接移动到当前屏幕(默认是在右边,可以注释这个效果,怎么运行看看),然后不断的通过positionOffsetPixels抵消原来默认移动时的位移,让用户感觉它就在原地放大缩小~~

好了,这样就实现了~~你可以随便写自己喜欢的动画效果,比如在默认上面加个淡入淡出或者神马,随便~~是不是很随意~~

我们的布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
  >

<com.example.zhy_jazzyviewpager.MyJazzyViewPager
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/id_viewPager" />

</RelativeLayout>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/5101da8cfc0bb38eaf1dc72e3571e725.html