Android仿喜马拉雅banner颜色渐变
先看一下喜马拉雅banner效果
接下来看一下demo的效果
接下来先看看如何实现:
1、取图片的颜色,用到系统提供的调色板Paletee,引入方式
implementation 'com.android.support:palette-v7:28.0.0'
Palette是什么?
它能让你从图像中提取突出的颜色。这个类能提取以下几种颜色:
Vibrant(充满活力的)
Vibrant dark(充满活力的黑)
Vibrant light(充满活力的亮)
Muted(柔和的)
Muted dark(柔和的黑)
Muted lighr(柔和的亮)
主要代码如下:
@Overridepublic void displayImage(Context context, final Object imgObj, ImageView imageView) {this.context = context;if (imgObj != null) {imageView.setPadding(30, 0, 30, 0);Glide.with(context).asBitmap().load(imgObj.toString()).listener(new RequestListener<Bitmap>() {@Overridepublic boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {return false;}@Overridepublic boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {setColorList(resource, imgObj.toString());return false;}}).apply(RequestOptions.bitmapTransform(new RoundedCorners(20))).into(imageView);}}private void setColorList(Bitmap bitmap, String imgUrl) {if (colorList == null) {return;}palette = Palette.from(bitmap).generate();for (int i = 0; i < colorList.size(); i++) {if (colorList.get(i).getImgUrl().equals(imgUrl)) {// imgUrl作为识别标志if (palette.getVibrantSwatch() != null) {colorList.get(i).setVibrantColor(palette.getVibrantSwatch().getRgb());}if (palette.getDarkVibrantSwatch() != null) {colorList.get(i).setVibrantDarkColor(palette.getDarkVibrantSwatch().getRgb());}if (palette.getLightVibrantSwatch() != null) {colorList.get(i).setVibrantLightColor(palette.getLightVibrantSwatch().getRgb());}if (palette.getMutedSwatch() != null) {colorList.get(i).setMutedColor(palette.getMutedSwatch().getRgb());}if (palette.getDarkMutedSwatch() != null) {colorList.get(i).setMutedDarkColor(palette.getDarkMutedSwatch().getRgb());}if (palette.getLightVibrantSwatch() != null) {colorList.get(i).setMutedLightColor(palette.getLightVibrantSwatch().getRgb());}}}}
2、使用第三方banner库 ,感谢其作者,非常好用。github地址banner
主要代码如下:
banner.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {@Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {if (positionOffset > 1) {//会出现极个别大于1的数据return;}//修正position,解决两头颜色错乱,来自Banner控件源码if (position == 0) {position = count;}if (position > count) {position = 1;}int pos = (position + 1) % count;//很关键int vibrantColor = ColorUtils.blendARGB(imageLoader.getVibrantColor(pos), imageLoader.getVibrantColor(pos + 1), positionOffset);ivBannerHeadBg.setBackgroundColor(vibrantColor);setStatusBarColor(MainActivity.this, vibrantColor);}@Overridepublic void onPageSelected(final int position) {if(isInit){// 第一次,延时加载才能拿到颜色isInit = false;new Handler().postDelayed(new Runnable() {@Overridepublic void run() {int vibrantColor = imageLoader.getVibrantColor(1);ivBannerHeadBg.setBackgroundColor(vibrantColor);setStatusBarColor(MainActivity.this, vibrantColor);}}, 200);}}@Overridepublic void onPageScrollStateChanged(int i) {}});
demo下载地址:demo下载,
csdn积分没办法自己控制,积分越来越多了,2019-12-05开源了,传到github。github传送门
Android仿喜马拉雅banner颜色渐变相关推荐
- mpvue实现仿喜马拉雅banner颜色渐变效果
参考:https://blog.csdn.net/WeiHan_Seven/article/details/103872499 用swiper轮播图片,调用色彩分析插件取出图片的配色,然后设置轮播图背 ...
- Android之简单背景颜色渐变实现
1.问题 需要实现简单颜色渐变背景 2.xml文件实现 1).bg.xml文件 <?xml version="1.0" encoding="utf-8"? ...
- android的颜色渐变动画效果图,Android简单实现一个颜色渐变的ProgressBar
今天看一个教程,看到一个颜色渐变的ProgressBar,觉得有点意思,所以记录一番. 下面这个是效果图 颜色渐变的ProgressBar 看到效果图可能会给人一种使用了高端技术的感觉,其实这个没有那 ...
- Android 自带描边颜色渐变炫酷进度条
/** 外描边的宽度 */ private float BORDER_STROCK; /** 进度条进度矩形与控件边界的距离,≥BORDER_STROCK */ private float PROGR ...
- Android 自带描边颜色渐变炫酷进度条,面试必知必会
3. 画第三个圆角矩形作为进度条的最外层(进度层)盖在背景层之上 4. 描边层和背景层颜色可用纯色,进度层为了炫酷可用渐变色 这是实现该自带描边颜色渐变进度条的原理,也是在PS中实现该效果的步骤,同样 ...
- android仿喜马拉雅APP状态栏,ReactNative+TypeScript仿喜马拉雅开发App(示例代码)
ReactNative+TypeScript仿喜马拉雅开发App 融合RN的跨平台能力+TS的全新开发体验 使用RN + TS开发听书App,从需求分析,到功能实现,一步步带领大家完成功能,学会如何解 ...
- android仿喜马拉雅APP状态栏,一个模仿企鹅 FM 界面的 Android 应用—喜马拉雅Kotlin。完全使用 Kotlin 开发。...
XimalayaKotlin 一个模仿企鹅 FM 界面的Android 应用-喜马拉雅Kotlin.完全使用 Kotlin 开发.有声资源和播放器由喜马拉雅 SDK 提供. 主要功能: - 在线播放专 ...
- android仿喜马拉雅APP状态栏,源码分享:高仿喜马拉雅FM
最新用空闲时间高仿了一下喜马拉雅FM这款APP,目前主要完成了发现栏目中的推荐页面. 效果演示 分析 +发现tab中有五个小分类,分别对应五个页面,所有在"发现"的控制器中使用了U ...
- android 滑动导航栏颜色渐变,Android App页面滑动标题栏颜色渐变
通常,我们会被要求实现类似支付宝首页的特效:随着界面的滑动,标题栏的背景透明度渐变. 在实际开发中,常见的滑动有列表RecyclerView(ListView)滑动,NestedScrollView( ...
最新文章
- Sales and Distribution (SD)
- 7/100. Move Zeroes
- Java 蓝桥杯 判断闰年
- SQL 2016 性能调优培训来了!!! 还免费!!!
- 12306 被质疑过度获取用户隐私;直播答题外挂横行;阿里云辟谣称绝不做虚拟货币 | 一周业界事
- deeplearning.ai——构建循环神经网络
- fifaol4服务器维护,新闻|FIFAOL4 5月7日停机维护公告
- ORACLE11gR2安装XDB
- STM32串口通信以寄存器地址和HAL两种方式实验Hello Windows!
- Codeforces Round #363 (Div. 2) B. One Bomb (水题)
- 看 SICP 不如先看 The Little Schemer
- 合肥工业大学计算机与信息学院导师介绍,合肥工业大学计算机与信息学院硕士生导师:方静副教授...
- 程序员python代码打招呼方式_某编程少年说他是Python大神,神级程序员不用一行代码教他做人!...
- android图片凹凸效果,图像滤镜处理算法:柔化、光照、放大镜、哈哈镜
- BCB数据库构件用法的总结
- JAVA数据类型的划分
- go语言 格式化输出fmt.Printf()使用大全
- 最近发现一个很全面的历史网站,包含世界各国各个时代内容
- RPC服务器不可用解决方法汇集
- 【docker】dbclient远程访问非本机数据库(mysql,oracle,postgres,sqlserver/mssql),测试远程数据库连通性