1.在此我们引用 支持无限滑动的3D视觉的画廊效果、 平面普通广告栏轮播

这个例子中有可以运行的效果,大家可以下载下来先看一下,在我开始使用的时候,发现,想要调整 page item中的间距,比较困难,并没有暴露方法出来。所以就要看一下源代码,发现,在不使用3D效果,即初始化:initBanner(urlList,false),没有什么问题,(这里说的3D效果,就是左右item要比正在显示的item的高度小一些,并且添加动画的效果)

banner_3d.initBanner(urlList, true)//开启3D画廊效果.addPageMargin(5, 15)//参数1page之间的间距,参数2中间item距离边界的间距.addPoint(6)//添加指示器.addPointBottom(7).addStartTimer(5)//自动轮播5秒间隔.addRoundCorners(12)//圆角.finishConfig()//这句必须加.addBannerListener(new BannerViewPager.OnClickBannerListener() {@Overridepublic void onBannerClick(int position) {//点击itemshowShort("效果1点击"+position);Log.i("test","--------------00x1");}});

2.发现开启3D效果时,addPageMargin会失效,item左右的间距设置没有任何改变,页面非常丑陋,左右间距相差太大,罪魁祸首是 ZoomPageTransformer这个类

然后我们可以通过修改 setScaleX,setScaleY来分别改变page item间距以及 左右item的高度问题,以下我修改了原来的view.setScaleX(MIN_SCALE);为 view.setScaleY(X_SCALE);

package com.lzj.gallery.library.transformer;import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.View;/*** Created by Administrator on 2018/11/28.* 3D画廊效果其实就是ViewPager的item切换时,进行缩放的动画效果**/public class ZoomPageTransformer implements ViewPager.PageTransformer {private static final float MAX_SCALE = 1.0f;//0缩放//    private static final float MIN_SCALE = 0.85f;//0.85缩放private static final float MIN_SCALE = 0.89f;//0.85缩放private static final float X_SCALE = 0.99f;private float MIN_ALPHA = 1.0f;//最小透明度public ZoomPageTransformer() {}public ZoomPageTransformer(float MIN_ALPHA) {this.MIN_ALPHA = MIN_ALPHA;}@Overridepublic void transformPage(View view, float position) {//setScaleY只支持api11以上/*** (-oo,-1) 相对于左边第一页,其左边的所有页面 *** x、y拉伸为MIN_SCALE、透明度MIN_ALPHA*/if (position < -1) {Log.d("MyInfo","11111");
//            view.setScaleX(MIN_SCALE);view.setScaleX(X_SCALE);view.setScaleY(MIN_SCALE);view.setAlpha(MIN_ALPHA);}/*** [-1, 1 )当前页的左右第一页*/else if (position < 1) {Log.d("MyInfo","2222");float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE);//[0, 1 ) 相对于当前选中页,其右边第一页 **if (position > 0) {Log.d("MyInfo","3333");view.setTranslationX(-scaleFactor);}// [-1, 0 ) 相对于当前选中页,其左边的第一页**else if (position < 0) {Log.d("MyInfo","4444");view.setTranslationX(scaleFactor);}view.setScaleY(scaleFactor);
//            view.setScaleX(scaleFactor);view.setScaleX(X_SCALE);// float alpha = 1f -  Math.abs(position) * (1 - );float alpha = MIN_ALPHA + (1 - MIN_ALPHA) * (1 - Math.abs(position));view.setAlpha(alpha);}/*** [1,+oo) 相对于右边第一页,其右边的所有页面* x、y拉伸为MIN_SCALE、透明度MIN_ALPHA*/else { // (1,+Infinity]Log.d("MyInfo","5555");
//            view.setScaleX(MIN_SCALE);view.setScaleX(X_SCALE);view.setScaleY(MIN_SCALE);view.setAlpha(MIN_ALPHA);}}}

3.重要方法

  • view.setScaleX(X_SCALE);
  • view.setScaleY(MIN_SCALE);

4.如何使用

4.1xml中声明:

<com.lzj.gallery.library.views.BannerViewPagerandroid:id="@+id/banner_3d"android:layout_marginTop="20dp"android:clipChildren="false"android:layout_width="match_parent"android:layout_height="150dp"></com.lzj.gallery.library.views.BannerViewPager>

4.2 activity中调用

banner_3d.initBanner(urlList, true)//开启3D画廊效果.addPageMargin(5, 15)//参数1page之间的间距,参数2中间item距离边界的间距.addPoint(6)//添加指示器.addPointBottom(7).addStartTimer(5)//自动轮播5秒间隔.addRoundCorners(12)//圆角.finishConfig()//这句必须加.addBannerListener(new BannerViewPager.OnClickBannerListener() {@Overridepublic void onBannerClick(int position) {//点击itemshowShort("效果1点击"+position);Log.i("test","--------------00x1");}});

4.3 优化处理(页面中控制 banner轮播开始与暂停)

@Overridepublic void onStart() {super.onStart();if(mBanner!=null){mBanner.startTimer();}}@Overridepublic void onStop() {super.onStop();if(mBanner!=null){mBanner.stopTimer();}}

注意:(如果在RecyclerView中使用的时候,要先进行 mBanner.removeAllView(),否则会有图案粘贴在背后的一个bug)

由于上面贴出的那个类还在类库文件中,可以将源代码下载下来并且将 gallery类库直接导进来,修改ZoomPageTransformer即可。下面贴一张改后的效果图(第一个显示为改后的效果):

推荐一个比较好用的画廊展示图片(支持无限轮播)的控件ViewPagerGallery相关推荐

  1. wpf加载上千张图片部分图片不显示_开源WPF控件库MaterialDesignInXAML推荐

    (给DotNet加星标,提升.Net技能) 转自:沙漠之狐耶dotnet9.com/?p=2180 前言 介绍一个开源的C# WPF开源控件库,非常漂亮,重点是开源哦 WPF做桌面开发是很有优势的,除 ...

  2. android 轮换实现动画,怎么在Android中实现一个首页无限轮播功能

    怎么在Android中实现一个首页无限轮播功能 发布时间:2021-04-12 16:22:49 来源:亿速云 阅读:74 作者:Leah 这期内容当中小编将会给大家带来有关怎么在Android中实现 ...

  3. 关于小红书的小程序不同数量的轮播图,展示不一样的轮播指示点的实现

    用过小红书的人,应该注意到,小红书的详情页轮播模块做的有点花里胡哨,可谓天下产品一家亲.人家有的,我们也想有.于是在百度不到的情况下,只能自己想办法写类似的轮播指示点效果了. 先看想要实现的效果图: ...

  4. iOS换一种思路写一个无限轮播的滚动视图

    换一种思路写一个无限轮播的滚动视图 写这篇博客已经距离我当时写差不多有一个月时间了,也完善了很多,基本是没有bug的,如果有,不妨留言,喜欢的话,劳烦各位点个赞,不喜欢的,不妨看看思路,提提意见 1. ...

  5. vue 实现无限轮播_用vue写一个轮播图效果

    轮播图在网站中几乎无处不在,占用地方少,交互性好.今天就来聊聊如何用vue实现一个轮播效果. 一.原理 在轮播图数组dataList中,定义一个变量currentIndex = 0表示第一张图片,默认 ...

  6. matlab中怎么判断一个pushbutton按钮是否按下,matlab的GUI 想问下 每个控件例如pushbutton的函数要怎么编写,函数与普通的m文件一样吗?...

    满意答案 capursuer 2013.05.02 采纳率:47%    等级:12 已帮助:12282人 1.首先我们新建一个GUI文件:File/New/GUI 如下图所示: 选择Blank GU ...

  7. 5 压缩上传图片_推荐一个干净纯粹的网站,专注图片压缩、pdf相关操作

    关于图片和pdf操作,老Y之前给大家推荐过万彩办公大师,忘记的小伙伴可以回顾下这篇文章:办公利器(PDF工具|格式转换|图片编辑|文字识别|图片处理-) 今天老Y给大家推荐的是一个非常干净纯粹的网站, ...

  8. IOS-—UICollectionView使用综述(二 )(基础篇--画廊展示图片,瀑布流展示图片)

    效果图 : 画廊: 瀑布流: 1.画廊 1.1 简述 这里是通过纯代码的方式进行添加操作 1.2 创建设置UICollectionView #import "ViewController.h ...

  9. iOS-利用UIScrollView实现展示图片的无限滚动及自动滚动 - 郭晓

    1 // 2 // GXViewController.m 3 // 自动滚动及无线循环 4 // 5 // Created by 郭晓 on 14-3-7. 6 // Copyright (c) 20 ...

最新文章

  1. 博客同步至阿里云开发者社区,快来帮我涨人气吧
  2. Java经典面试题整理及答案详解(四)
  3. php前端路由权限,SaaS-前端权限控制
  4. 钉钉终于崩了!小学生欢呼庆祝解放,没想到没高兴多久就...
  5. linux进程跑飞了,【Shell】Linux信号(二)
  6. 字体设计灵感合集|字体决定了设计
  7. Linux—添加开机启动(服务/脚本)
  8. [转]微信小程序之购物车功能
  9. ac自动机 匹配最长前缀_【HDU】5069 Harry And Biological Teacher AC自动机fail指针建树dfs...
  10. 翻译PDF 翻译PPT 保留原格式 一键搞定
  11. xp系统远程桌面关闭计算机,Windows XP 使用远程桌面时的关机/重新启动方法
  12. Scrapy中对xpath使用re
  13. 神经网络 深度神经网络,主流的神经网络的框架
  14. 三大开源社区是哪几个_进入开源社区的4个技巧
  15. 松鼠的新家 LCA + 树上差分
  16. linux里添加网卡,Linux添加虚拟网卡的多种方法
  17. 重症肌无力患者不能吃什么
  18. 开学季都有哪些数码产品推荐?2022年数码好物推荐
  19. 正则表达式把html中换行去掉,JS去除空格和换行的正则表达式(推荐)
  20. 生产排程计划面临哪些问题?如何有效解决?

热门文章

  1. 向量的加减(输出重载)
  2. 我的世界空岛生存服务器制作,我的世界1.7.10羽逸之光空岛生存服务器
  3. 【趣文】秦始皇与区块链竟然有关系
  4. 全球与中国工业自动化运动控制系统市场现状及未来发展趋势
  5. 小米路由器局域网设备ping不通
  6. 手机 download .cu .log_手机清理内存,这些英文文件哪些是可以删除的?看完就知道...
  7. 关注灾情,心系九寨18
  8. 日志框架之Logback的使用与详细配置
  9. 小博老师解析Java核心技术 ——JDBC普通增删改操作
  10. 设计网站中的精品,你可能需要它--第五期(Logo设计,助你提升效率)