先看一下喜马拉雅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颜色渐变相关推荐

  1. mpvue实现仿喜马拉雅banner颜色渐变效果

    参考:https://blog.csdn.net/WeiHan_Seven/article/details/103872499 用swiper轮播图片,调用色彩分析插件取出图片的配色,然后设置轮播图背 ...

  2. Android之简单背景颜色渐变实现

    1.问题 需要实现简单颜色渐变背景 2.xml文件实现 1).bg.xml文件 <?xml version="1.0" encoding="utf-8"? ...

  3. android的颜色渐变动画效果图,Android简单实现一个颜色渐变的ProgressBar

    今天看一个教程,看到一个颜色渐变的ProgressBar,觉得有点意思,所以记录一番. 下面这个是效果图 颜色渐变的ProgressBar 看到效果图可能会给人一种使用了高端技术的感觉,其实这个没有那 ...

  4. Android 自带描边颜色渐变炫酷进度条

    /** 外描边的宽度 */ private float BORDER_STROCK; /** 进度条进度矩形与控件边界的距离,≥BORDER_STROCK */ private float PROGR ...

  5. Android 自带描边颜色渐变炫酷进度条,面试必知必会

    3. 画第三个圆角矩形作为进度条的最外层(进度层)盖在背景层之上 4. 描边层和背景层颜色可用纯色,进度层为了炫酷可用渐变色 这是实现该自带描边颜色渐变进度条的原理,也是在PS中实现该效果的步骤,同样 ...

  6. android仿喜马拉雅APP状态栏,ReactNative+TypeScript仿喜马拉雅开发App(示例代码)

    ReactNative+TypeScript仿喜马拉雅开发App 融合RN的跨平台能力+TS的全新开发体验 使用RN + TS开发听书App,从需求分析,到功能实现,一步步带领大家完成功能,学会如何解 ...

  7. android仿喜马拉雅APP状态栏,一个模仿企鹅 FM 界面的 Android 应用—喜马拉雅Kotlin。完全使用 Kotlin 开发。...

    XimalayaKotlin 一个模仿企鹅 FM 界面的Android 应用-喜马拉雅Kotlin.完全使用 Kotlin 开发.有声资源和播放器由喜马拉雅 SDK 提供. 主要功能: - 在线播放专 ...

  8. android仿喜马拉雅APP状态栏,源码分享:高仿喜马拉雅FM

    最新用空闲时间高仿了一下喜马拉雅FM这款APP,目前主要完成了发现栏目中的推荐页面. 效果演示 分析 +发现tab中有五个小分类,分别对应五个页面,所有在"发现"的控制器中使用了U ...

  9. android 滑动导航栏颜色渐变,Android App页面滑动标题栏颜色渐变

    通常,我们会被要求实现类似支付宝首页的特效:随着界面的滑动,标题栏的背景透明度渐变. 在实际开发中,常见的滑动有列表RecyclerView(ListView)滑动,NestedScrollView( ...

最新文章

  1. Sales and Distribution (SD)
  2. 7/100. Move Zeroes
  3. Java 蓝桥杯 判断闰年
  4. SQL 2016 性能调优培训来了!!! 还免费!!!
  5. 12306 被质疑过度获取用户隐私;直播答题外挂横行;阿里云辟谣称绝不做虚拟货币 | 一周业界事
  6. deeplearning.ai——构建循环神经网络
  7. fifaol4服务器维护,新闻|FIFAOL4 5月7日停机维护公告
  8. ORACLE11gR2安装XDB
  9. STM32串口通信以寄存器地址和HAL两种方式实验Hello Windows!
  10. Codeforces Round #363 (Div. 2) B. One Bomb (水题)
  11. 看 SICP 不如先看 The Little Schemer
  12. 合肥工业大学计算机与信息学院导师介绍,合肥工业大学计算机与信息学院硕士生导师:方静副教授...
  13. 程序员python代码打招呼方式_某编程少年说他是Python大神,神级程序员不用一行代码教他做人!...
  14. android图片凹凸效果,图像滤镜处理算法:柔化、光照、放大镜、哈哈镜
  15. BCB数据库构件用法的总结
  16. JAVA数据类型的划分
  17. go语言 格式化输出fmt.Printf()使用大全
  18. 最近发现一个很全面的历史网站,包含世界各国各个时代内容
  19. RPC服务器不可用解决方法汇集
  20. 【docker】dbclient远程访问非本机数据库(mysql,oracle,postgres,sqlserver/mssql),测试远程数据库连通性

热门文章

  1. ArcGis地图的配准总结
  2. Windows中Java服务怎么打开防火墙
  3. 全栈项目|小书架|服务器端-NodeJS+Koa2 实现搜索功能
  4. php 取第一个首字母,php里获取第一个中文首字母并排序
  5. mermaid画饼图
  6. 浪潮之巅 第十六章 印钞机——最佳的商业模式(吴军)
  7. 达人评测 i7 12700H和i9 12900HK选哪个好
  8. 想接触 a16z,Google,京东以及区块链大咖?一场科技大会满足你
  9. 入手评测 荣耀手环6和华为手环6区别
  10. 科研必备网站(收藏夹吃灰系列)