先看一下喜马拉雅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. 辞职之后的思考--激励
  2. 使用线程池时一定要注意的五个点
  3. python一般用什么编译器-Python必学之编译器用哪个好?你用错了吧!
  4. java接口文档生成工具_【分享】接口文档生成工具apipost
  5. pytorch FC_regression
  6. mysql ---- 约束
  7. 字节跳动冬令营报名启动,邀你一起备战ICPC世界总决赛!
  8. (转)是时候说说Pivotal这个富二代了!
  9. silverlight 初始页面进行安装主应用(初始安装xap,本地加载xap),实现silverlight程序成桌面应用程序。
  10. python爬取b站弹幕分析_B站直播弹幕获取 - 用python写一个B站弹幕姬吧
  11. 分享雷柏无线鼠标接收器损坏后的更换方法
  12. 【保持阅读习惯才能无障碍阅读】如何阅读英文时报 magazinelib 获取报纸
  13. JN项目-qq昵称含有表情无法进行第三方登录
  14. 我的世界rpg服务器背包位置,我的世界查看玩家背包方法 如何查看玩家背包
  15. 云适配牵手中建信息 征战企业级市场信心十足
  16. python编译环境 eclipse_Eclipse python 开发环境配置
  17. python3--日期时间处理最近n个自然周计算
  18. When you are old
  19. git统计历史上某一段时间代码的修改量
  20. 不可多得的WinXP技巧十则(转)

热门文章

  1. 计算机桌面太暗了怎么调亮,为何我的电脑屏幕变得很暗,怎样调亮?
  2. 宿舍管理系统一个很好的空架子
  3. 数据挖掘原理与实践 第四章作业
  4. vue路由跳转错误问题
  5. Tampermonkey油猴 加载本地文件
  6. 在VSCode中将Maven项目打包成jar文件
  7. ubuntu电源按键操作
  8. 解除微信接收文件只读属性的最新解决方案,新版微信3.9.2.23也能用,适用范围更广,没有微信版本要求,不需要微信降级
  9. 【第010篇】vue表单验证之验证非空字符(空格等空白符)
  10. 5月4日横滨アリ ナ跳跳+NYC CON 观后感