android ViewPager实现滑动翻页效果实例代码
程序员文章站
2023-12-12 23:24:40
实现viewpager的滑动翻页效果可以使用viewpager的setpagetransformer方法,如下:
import android.content...
实现viewpager的滑动翻页效果可以使用viewpager的setpagetransformer方法,如下:
import android.content.context; import android.support.v4.view.viewpager; import android.util.attributeset; import android.view.view; public class readviewpager extends viewpager { public readviewpager(context context) { super(context); } public readviewpager(context context, attributeset attrs) { super(context, attrs); setanima(); } public void setanima() { setpagetransformer(true, new pagetransformer() { private static final float min_scale = 0.75f; @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 <= 0) { // [-1,0] // use the default slide transition when moving to the left page view.setalpha(1); view.settranslationx(0); view.setscalex(1); view.setscaley(1); } else if (position <= 1) { // (0,1] // fade the page out. view.setalpha(1 - position); // // // counteract the default slide transition // view.setalpha(1); view.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 { // (1,+infinity] // this page is way off-screen to the right. view.setalpha(0); } } }); } }
核心代码是android官方demo,以上实现的是翻页效果是:上面一页被滑出界面时,下面一页慢慢显现,透明度慢慢加大,并且大小由小慢慢变大。
不过有一个奇怪的现象,当我做一个答题界面时,刚刚开始我采用viewpager与view结合实现无限循环切换,并且采用上面的动画效果,可是每当我滑动到最后一张,也就是要开始新的一轮循环的时候,被滑出去的一页也会出现慢慢变透明的情况,而我用viewpager结合fragment实现无限循环切换的是就不会出现这种效果
如果想要实现仿造驾考宝典的翻页效果,只要把核心方法改为以下代码便可以了
setpagetransformer(true, new pagetransformer() { private static final float min_scale = 0.75f; @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 <= 0) { // [-1,0] // use the default slide transition when moving to the left page view.setalpha(1); view.settranslationx(0); view.setscalex(1); view.setscaley(1); } else if (position <= 1) { // (0,1] // fade the page out. // view.setalpha(1 - position); // // // counteract the default slide transition view.setalpha(1); view.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 { // (1,+infinity] // this page is way off-screen to the right. view.setalpha(0); } } });
下面我们来讲讲position参数:
position的可能性的值有:
[-infinity,-1) 已经看不到了
(1,+infinity] 已经看不到了
[-1,1]
重点看[-1,1]这个区间 , 其他两个的view都已经看不到了~~
假设现在viewpager在a页现在滑出b页,则:
a页的position变化就是( 0, -1]
b页的position变化就是[ 1 , 0 ]
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
-
android ViewPager实现滑动翻页效果实例代码
-
Android view滑动悬浮固定效果实现代码示例
-
Android之禁止ViewPager滑动实现实例
-
Android 利用ViewPager实现图片可以左右循环滑动效果附代码下载
-
Android 自定义view实现进度条加载效果实例代码
-
Android实现仿通讯录侧边栏滑动SiderBar效果代码
-
Android自定义ScrollView实现放大回弹效果实例代码
-
Android使用TabLayou+fragment+viewpager实现滑动切换页面效果
-
Android 自定义 HorizontalScrollView 打造多图片OOM 的横向滑动效果(实例代码)
-
Android利用ViewPager实现滑动广告板实例源码