android 中间大两边小,Banner两边小中间大的动画
首先我是在这个基础上做的,自行引入。
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两边小中间大的动画相关推荐
- 小屏幕android手机,手机屏越来越大,用户到处找小屏安卓手机,这三款便宜又好用...
原标题:手机屏越来越大,用户到处找小屏安卓手机,这三款便宜又好用 随着科技的进步,手机在更新换代的同时外形也在不断的变化,其中最明显的就是手机屏幕的变大,现在手机最大的屏幕已经达到了7寸,几乎可以和平 ...
- Android 4.0操作系统的20个使用小技巧
为什么80%的码农都做不了架构师?>>> 安卓4.0操作系统,它的一大卖点就是整合所有硬件的使用体验,无论是低端智能手机还是高端智能手机,只要运行Android ICS操作系统 ...
- .net textbox全屏后自适应变大_手机屏幕太小?无套路不花钱变大屏!
文/安哥拉 Hello 大家好,这里是工具狂人. 从 iPhone 最初诞生至今,一个显而易见的趋势是,手机屏幕变得越来越大. 但人们对更大屏幕的需求,似乎还未得到满足,从一些厂商推出的折叠屏手机可见 ...
- final-期末大作业-制作AR射箭小游戏(Unity AR配置详细教程)
要求 大作业要求: 制作一款特定技术应用小游戏,并提交技术报告. 内容(请参考以下技术主题,但不限于这些主题): 运用手机拍若干全景图,贴到天空盒或球型天空,做一个简单校园漫游功能. 粒子系统效果制作 ...
- (超多图)基于Android studio开发的一个简单入门小应用(超级详细!!)(建议收藏)
基于Android studio开发的一个简单入门小应用 一.前言 二.前期准备 三.开发一个小应用 五.运行应用 一.前言 在暑假期间,我学习JAVA基础,为了能早日实现自己用代码写出一个app的& ...
- “上者劳智,中者劳人,下者劳力;小富由勤,大富由命,巨富由恶”
"上者劳智,中者劳人,下者劳力:小富由勤,大富由命,巨富由恶". 一般一个人进入社会后,肯定会往三个方向发展: 一是发大财:就是往经商,往赚钱做生意方向发展: 二是当大官:就是往当 ...
- 如何在Android实现桌面清理内存简单Widget小控件
如何在Android实现桌面清理内存简单Widget小控件 我们经常会看到类似于360.金山手机卫士一类的软件会带一个widget小控件,显示在桌面上,上面会显示现有内存大小,然后会带一个按键功能来一 ...
- 洛古 P1373 小a和uim之大逃离
P1373 小a和uim之大逃离 题目提供者lzn 标签 动态规划 洛谷原创 难度 提高+/省选- 题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电 ...
- Local Response Normalization作用——对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力...
AlexNet将LeNet的思想发扬光大,把CNN的基本原理应用到了很深很宽的网络中.AlexNet主要使用到的新技术点如下. (1)成功使用ReLU作为CNN的激活函数,并验证其效果在较深的网络超过 ...
最新文章
- mt4指标最精准组合指标_股市最赚钱的黄金指标组合:KDJ+MACD指标的配合使用,助于买在低点卖在高点!...
- Windows Server 2008组策略安全实践手册
- 再谈 BigInteger - 使用快速傅里叶变换
- Pyrex也许是一个好东西
- windowopen传值到jsp_window.open()使用方法以及传参数的问题总结
- 一行语句让你的浏览器变成记事本
- 前端开发一些很有用的工具
- ES6学习笔记(二):教你玩转类的继承和类的对象
- MySQL 查询部门人数大于2的员工信息
- java程序员需要掌握的知识,看完直接跪服
- JavaScript中this指针指向的彻底理解
- java-信息安全(十六)-双向认证
- 机械设计:机械加工中获得工件尺寸精度的常用方法!
- SPKO的Laker分析(一)
- 分享一下开女装服装加盟店的赚钱攻略
- 《2022,自我增值的7个好习惯》读书笔记
- cup过高是什么意思_cpu占用率过高是什么原因
- “百钱买百鸡”是我国古代的著名数学题。题目这样描述:3文钱可以买1只公鸡,2文钱可以买一只母鸡,1文钱可以买3只小鸡。用100 文钱买100 只鸡,那么各有公鸡、母鸡、小鸡多少只?
- 计算机专业高薪职位,2016年高薪职业类排行榜揭晓,计算机专业最吃香
- 雨阳Ghost Xp Sp3笔记本通用版2011.11B
热门文章
- 品质管控计划ppt怎样写_分享|一位品质经理的质量管控经验总结
- Leetcode_454_4Sum II
- 互联网日报 | 唯品会连续32个季度盈利;微信及WeChat月活跃帐户12.1亿;美团旗下小象生鲜停用...
- ICIP2020:VVC两步渐进式帧内预测
- 9个有趣又实用的在线学习网站,个个免费高质量,刷到别错过
- matlab的4个窗口怎么找,[转载]matlab中各类对话框和窗口
- thinkphp3.2集成phpword,生成word文档并下载
- 百度API - 图像识别 申请账号使用
- 从零搭建 ES 搜索服务(四)拼音搜索
- 软件可不可以更新换代慢一点?