首先我是在这个基础上做的,自行引入。

compile 'com.youth.banner:banner:1.4.10' //最新版本

复制代码

实现效果一

实现效果二

1、修改viewPager的margin属性

可以自行复制一份源码banner.xml放自己的layout之下,然后修改布局文件中的BannerViewPager,添加marginLeft和marginRight属性

也可以通过反射的方式获取到viewPager,进行属性设置,因为源码没有提供修改的方法

public void setPagerMargin(GalleryBanner banner, int margin, int leftMargin, int rightMargin) {

try {

Class clazz = Banner.class;

Field field = clazz.getDeclaredField("viewPager");

field.setAccessible(true);

ViewPager viewPager = (ViewPager) field.get(banner);

// viewPager.setPageMargin(margin); 这句即可实现效果一

ViewGroup.MarginLayoutParams params = (MarginLayoutParams) viewPager.getLayoutParams();

params.setMargins(leftMargin, 0, rightMargin, 0);

} catch (NoSuchFieldException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

}

}

复制代码下载源码,进行修改

ViewPager实现的banner,只要新增一个动画效果就可以了

2、设置动画效果

即可实现效果二

try {

banner.setPageTransformer(false, ScalePagerTransformer.class.newInstance());

} catch (java.lang.InstantiationException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

}

复制代码public class ScalePagerTransformer implements ViewPager.PageTransformer {

private static final float MIN_SCALE = 0.8f; //缩放因子

private static final float MIN_ALPHA = 0.5f;

@Override

public void transformPage(View view, float position) {

if (position >= -1 || position <= 1) {

final float height = view.getHeight();

final float width = view.getWidth();

final float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position)); //缩放在0.8-1之间

final float vertMargin = height * (1 - scaleFactor) / 2;

final float horzMargin = width * (1 - scaleFactor) / 2;

view.setPivotY(0.5f * height); //设置缩放的中心点为view的中心,所以不需要设置setPageMargin()了

view.setPivotX(0.5f * width);

if (position < 0) {

view.setTranslationX(horzMargin - vertMargin / 2);

} else {

view.setTranslationX(-horzMargin + vertMargin / 2);

}

view.setScaleX(scaleFactor); //缩放

view.setScaleY(scaleFactor);

//我不需要透明度,所以屏蔽了

// view.setAlpha(MIN_ALPHA + (scaleFactor - MIN_SCALE) / (1 - MIN_SCALE) * (1 - MIN_ALPHA));

}

}

}

复制代码

3、banner滚动的图片带阴影

圆角图片可以通过glide来提供

阴影图片可以通过createImageView来提供,return new ShadowImageView()

public class GlideImageLoader extends ImageLoader {

@Override

public ImageView createImageView(Context context) {

return new ShadowImageView(context);

}

@Override

public void displayImage(Context context, Object path, ImageView imageView) {

Glide.with(context).load(path).into(imageView);

}

}

复制代码

参考

android 中间大两边小,Banner两边小中间大的动画相关推荐

  1. 小屏幕android手机,手机屏越来越大,用户到处找小屏安卓手机,这三款便宜又好用...

    原标题:手机屏越来越大,用户到处找小屏安卓手机,这三款便宜又好用 随着科技的进步,手机在更新换代的同时外形也在不断的变化,其中最明显的就是手机屏幕的变大,现在手机最大的屏幕已经达到了7寸,几乎可以和平 ...

  2. Android 4.0操作系统的20个使用小技巧

    为什么80%的码农都做不了架构师?>>>    安卓4.0操作系统,它的一大卖点就是整合所有硬件的使用体验,无论是低端智能手机还是高端智能手机,只要运行Android ICS操作系统 ...

  3. .net textbox全屏后自适应变大_手机屏幕太小?无套路不花钱变大屏!

    文/安哥拉 Hello 大家好,这里是工具狂人. 从 iPhone 最初诞生至今,一个显而易见的趋势是,手机屏幕变得越来越大. 但人们对更大屏幕的需求,似乎还未得到满足,从一些厂商推出的折叠屏手机可见 ...

  4. final-期末大作业-制作AR射箭小游戏(Unity AR配置详细教程)

    要求 大作业要求: 制作一款特定技术应用小游戏,并提交技术报告. 内容(请参考以下技术主题,但不限于这些主题): 运用手机拍若干全景图,贴到天空盒或球型天空,做一个简单校园漫游功能. 粒子系统效果制作 ...

  5. (超多图)基于Android studio开发的一个简单入门小应用(超级详细!!)(建议收藏)

    基于Android studio开发的一个简单入门小应用 一.前言 二.前期准备 三.开发一个小应用 五.运行应用 一.前言 在暑假期间,我学习JAVA基础,为了能早日实现自己用代码写出一个app的& ...

  6. “上者劳智,中者劳人,下者劳力;小富由勤,大富由命,巨富由恶”

    "上者劳智,中者劳人,下者劳力:小富由勤,大富由命,巨富由恶". 一般一个人进入社会后,肯定会往三个方向发展: 一是发大财:就是往经商,往赚钱做生意方向发展: 二是当大官:就是往当 ...

  7. 如何在Android实现桌面清理内存简单Widget小控件

    如何在Android实现桌面清理内存简单Widget小控件 我们经常会看到类似于360.金山手机卫士一类的软件会带一个widget小控件,显示在桌面上,上面会显示现有内存大小,然后会带一个按键功能来一 ...

  8. 洛古 P1373 小a和uim之大逃离

    P1373 小a和uim之大逃离 题目提供者lzn 标签 动态规划 洛谷原创 难度 提高+/省选- 题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电 ...

  9. Local Response Normalization作用——对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力...

    AlexNet将LeNet的思想发扬光大,把CNN的基本原理应用到了很深很宽的网络中.AlexNet主要使用到的新技术点如下. (1)成功使用ReLU作为CNN的激活函数,并验证其效果在较深的网络超过 ...

最新文章

  1. mt4指标最精准组合指标_股市最赚钱的黄金指标组合:KDJ+MACD指标的配合使用,助于买在低点卖在高点!...
  2. Windows Server 2008组策略安全实践手册
  3. 再谈 BigInteger - 使用快速傅里叶变换
  4. Pyrex也许是一个好东西
  5. windowopen传值到jsp_window.open()使用方法以及传参数的问题总结
  6. 一行语句让你的浏览器变成记事本
  7. 前端开发一些很有用的工具
  8. ES6学习笔记(二):教你玩转类的继承和类的对象
  9. MySQL 查询部门人数大于2的员工信息
  10. java程序员需要掌握的知识,看完直接跪服
  11. JavaScript中this指针指向的彻底理解
  12. java-信息安全(十六)-双向认证
  13. 机械设计:机械加工中获得工件尺寸精度的常用方法!
  14. SPKO的Laker分析(一)
  15. 分享一下开女装服装加盟店的赚钱攻略
  16. 《2022,自我增值的7个好习惯》读书笔记
  17. cup过高是什么意思_cpu占用率过高是什么原因
  18. “百钱买百鸡”是我国古代的著名数学题。题目这样描述:3文钱可以买1只公鸡,2文钱可以买一只母鸡,1文钱可以买3只小鸡。用100 文钱买100 只鸡,那么各有公鸡、母鸡、小鸡多少只?
  19. 计算机专业高薪职位,2016年高薪职业类排行榜揭晓,计算机专业最吃香
  20. 雨阳Ghost Xp Sp3笔记本通用版2011.11B

热门文章

  1. 品质管控计划ppt怎样写_分享|一位品质经理的质量管控经验总结
  2. Leetcode_454_4Sum II
  3. 互联网日报 | 唯品会连续32个季度盈利;微信及WeChat月活跃帐户12.1亿;美团旗下小象生鲜停用...
  4. ICIP2020:VVC两步渐进式帧内预测
  5. 9个有趣又实用的在线学习网站,个个免费高质量,刷到别错过
  6. matlab的4个窗口怎么找,[转载]matlab中各类对话框和窗口
  7. thinkphp3.2集成phpword,生成word文档并下载
  8. 百度API - 图像识别 申请账号使用
  9. 从零搭建 ES 搜索服务(四)拼音搜索
  10. 软件可不可以更新换代慢一点?