博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
放大进入缩小退出无限循环的Banner
阅读量:6359 次
发布时间:2019-06-23

本文共 1465 字,大约阅读时间需要 4 分钟。

无限循环

  1. 在PagerAdapter.getCount();方法里返回Integer.MAX_VALUE。设置图片用ImageView.setBackgroundDrawable(pics[position % pics.length];来实现伪无限循环。

  2. 在第一页的前边和最后一页的后边添加两个缓冲页P0和Pm, Pm显示第一页的内容,P0显示最后一页的内容,当滑动到P0时,强制转到最后一页,当滑动到Pm时强制转到第1页。这种方式会有闪屏的问题。

放大缩小

  1. 在OnPageChangeListener.onPageScrolled()方法中控制滚动页的缩放。这种方式新进入的页面会忽大忽小。

  2. 利用官方提供的PageTransFormer实现。

mViewPager.setPageTransFormer(false, new ScalePageTransFormer);public class ScalePageTransFormer implements ViewPager.PageTransformer {    private static final float MIN_SCALE = 0.85f;    private static final float MIN_ALPHA = 0.5f;    @SuppressLint("NewApi")    public void transformPage(View view, float position) {        if (position < -1) {//看不到的一页,第一页前边 *            view.setScaleX(MIN_SCALE);            view.setScaleY(MIN_SCALE);        } else if (position <= 1) {            if (position < 0) {//滑出的页 0.0 ~ -1 *                float scaleFactor = (1 - MIN_SCALE) * (0 - position);                view.setScaleX(1 - scaleFactor);                view.setScaleY(1 - scaleFactor);            } else {//滑进的页 1 ~ 0.0 *                float scaleFactor = (1 - MIN_SCALE) * (1 - position);                view.setScaleX(MIN_SCALE + scaleFactor);                view.setScaleY(MIN_SCALE + scaleFactor);            }        } else {//看不到的另一页,最后一页后边 *            view.setScaleX(MIN_SCALE);            view.setScaleY(MIN_SCALE);        }    }}

结论

通过设置PagerAdapter.getCount()返回Integer.MAX_VALUE和PageTransFormer来实现无线循环带动画的Banner轮播图比较靠谱,虽然内存稍微多一些。

转载地址:http://ttbma.baihongyu.com/

你可能感兴趣的文章
你还在看《深入理解Java虚拟机》的运行时数据模型吗?
查看>>
RIS,创建 React 应用的新选择
查看>>
线性结构上的动态规划--算法竞赛入门经典笔记
查看>>
面试官:你使用webpack时手写过loader,分离过模块吗?
查看>>
Ubuntu 16.04系统下 对OpenJDK编译好的Hotspot 进行调试
查看>>
00-利用思维导图梳理JavaSE基础知识-持续更新中!
查看>>
java中三种注释及其实际应用的意义
查看>>
【三石jQuery视频教程】01.图片循环展示
查看>>
ngrok
查看>>
ThinkPHP 模板变量输出
查看>>
android系统信息(内存、cpu、sd卡、电量、版本)获取
查看>>
HTML5、WebKit与移动应用开发
查看>>
Eclipse Debug Android Native Application
查看>>
java动态代理
查看>>
node.js原型继承
查看>>
揭露让Linux与Windows隔阂消失的奥秘(1)
查看>>
我的友情链接
查看>>
Mysql备份和恢复策略
查看>>
linux17-邮件服务器
查看>>
AS开发JNI步骤
查看>>