您的位置:首页 > 移动开发 > Android开发

Android 自定义ViewPager的滑动切换页面效果

2017-04-13 17:41 531 查看
先借用网上图片效果





自定义效果最重要的一个方法就是

viewPager.setPageTransformer(boolean,PageTransformer)

这个方法就是设置viewpager的滑动效果的方法,里面需要传递两个参数:第一个参数传true就行了

第二个参数就是重点了我们需要创建一个效果类,继承PageTransformer这个类然后来实现我们的自定义效果
class DepthPageTransformer implements ViewPager.PageTransformer {

@Override
public void transformPage(View view, float position) {
int pageWidth = view.getWidth();
int pageHeight = view.getHeight();
if (position < -1) {
} else if (position <= 0) {
view.setPivotX(pageWidth / 2);
view.setPivotY(pageHeight);
view.setRotation(15 * position);
} else if (position <= 1) {
view.setPivotX(pageWidth / 2);
view.setPivotY(pageHeight);
view.setRotation(15 * position);
} else {
}

}

//        //去除默认横向滑动
//        view.setTranslationX(pageWidth * -position);

}
继承类里面就一个方法 解释一下,transformPage这个方法里面传来了两个值,一个是view,一个是position
这个view就是我们需要进行操作(旋转,放大,缩小等效果)的view,直接就可以用view.setRotation(),setTranslation()等
这些方法进行操作
而这个Position就重要了,Position就是两个页面滑动之间的系数,表示滑动了多少,viewpager加载三个页面,
当前显示的和左右两个页面

左边的页id为-1 当前显示的页id为0 右边的页id为1



如果Position从-1慢慢变大变成了0就说明id=-1的页面在向id=0的页面移动,就是向右滑动,反之也是一样向左滑动
这样我们就能很好理解Position的变化值的意思了

所以我们只要判断 -1<position<=0 的时候就说明id=-1的页面在左右滑动
当 0>position<=1 的时候就说明id=0的页面在左右滑动
所以我们通常看到 Position一会是负数,一会又是正数,因为每次滑动都是相邻两个页面一起动的

以上都是我自己的理解,记录下来。我觉得这样解释起来会更容易理解,有什么错误麻烦指出
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: