Palette用来从图片资源中获取颜色内容。

  1. 下面是个对颜色值使用的工具类:
  1. public class PaletteUtils {
  2. public static int getColorWithDefault(Palette palette, int defaultColor) {
  3. Palette.Swatch currentItem = null;
  4.  
  5. if (currentItem == null) {
           //充满活力的颜色
  6. currentItem = palette.getVibrantSwatch();
  7. }
  8. if (currentItem == null) {
           //充满活力的暗色调
  9. currentItem = palette.getDarkVibrantSwatch();;
  10. }
  11. if (currentItem == null) {
           //充满活力的亮色调
  12. currentItem = palette.getLightVibrantSwatch();
  13. }
  14. if (currentItem == null) {
  15. //柔和色调
           currentItem = palette.getMutedSwatch();
  16. }
  17. if (currentItem == null) {
           //柔和暗色调
  18. currentItem = palette.getDarkMutedSwatch();
  19. }
  20. if (currentItem == null) {
           //柔和亮色调
  21. currentItem = palette.getLightMutedSwatch();
  22. }
  23.  
  24. return currentItem != null ? currentItem.getRgb() : defaultColor;
  25. }
  26.  
  27. private PaletteUtils() {
  28. throw new AssertionError();
  29. }
  30. }

如下是从bitmap里面获取颜色内容,get是获取不同色调的颜色,然后通过getRgb()获取程序所需的真实颜色内容,

palette.generateAsync是异步的获取bitmap里面颜色的方法,里面的操作是在异步线程中的操作。

Palette.generate()不是异步的,主线程中操作。

  1. Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
  2. SuperAwesomeCardFragment.getBackgroundBitmapPosition(position));
  3. // Palette的部分
  4. Palette.generateAsync(bitmap, new Palette.PaletteAsyncListener() {
  5. /**
  6. * 提取完之后的回调方法
  7. */
  8. @Override
  9. public void onGenerated(Palette palette) {
  10. Palette.Swatch vibrant = palette.getVibrantSwatch();
  11. /* 界面颜色UI统一性处理,看起来更Material一些 */
  12. mPagerSlidingTabStrip.setBackgroundColor(vibrant.getRgb());
  13. mPagerSlidingTabStrip.setTextColor(vibrant.getTitleTextColor());
  14. // 其中状态栏、游标、底部导航栏的颜色需要加深一下,也可以不加,具体情况在代码之后说明
  15. mPagerSlidingTabStrip.setIndicatorColor(colorBurn(vibrant.getRgb()));
  16. mToolbar.setBackgroundColor(vibrant.getRgb());
  17. if (android.os.Build.VERSION.SDK_INT >= 21) {
  18. Window window = getWindow();
  19. // 很明显,这两货是新API才有的。
  20. window.setStatusBarColor(colorBurn(vibrant.getRgb()));
  21. window.setNavigationBarColor(colorBurn(vibrant.getRgb()));
  22. }
  23. }
  24. });

android 5.0 -- Palette的更多相关文章

  1. Android 5.0 新特性

    Material Design Material Design简介 Material Design是谷歌新的设计语言,谷歌希望寄由此来统一各种平台上的用户体验,Material Design的特点是干 ...

  2. Android 5.0之应用中实现材料设计—Material Design

    上午的时候在刷Google+,看到了Abraham Williams转发了一篇强文,是Android Developers网站新发的一篇博客—Implementing Material Design ...

  3. Android数据存储之Android 6.0运行时权限下文件存储的思考

    前言: 在我们做App开发的过程中基本上都会用到文件存储,所以文件存储对于我们来说是相当熟悉了,不过自从Android 6.0发布之后,基于运行时权限机制访问外置sdcard是需要动态申请权限,所以以 ...

  4. Android权限管理之RxPermission解决Android 6.0 适配问题

    前言: 上篇重点学习了Android 6.0的运行时权限,今天还是围绕着Android 6.0权限适配来总结学习,这里主要介绍一下我们公司解决Android 6.0权限适配的方案:RxJava+RxP ...

  5. Android权限管理之Android 6.0运行时权限及解决办法

    前言: 今天还是围绕着最近面试的一个热门话题Android 6.0权限适配来总结学习,其实Android 6.0权限适配我们公司是在今年5月份才开始做,算是比较晚的吧,不过现在Android 6.0以 ...

  6. Android 5.0 到 Android 6.0 + 的深坑之一 之 .so 动态库的适配

    (原创:http://www.cnblogs.com/linguanh) 目录: 前序 一,问题描述 二,为何会如此"无情"? 三,目前存在该问题的知名SDK 四,解决方案,1 对 ...

  7. Android 7.0 Nougat牛轧糖 发布啦

    Android 7.0 Nougat牛轧糖 发布啦 Android 7.0 Nougat 牛轧糖于本月发布了. 从官方blog里可以了解到这个版本的新特性. Android 7.0 从2016年8月正 ...

  8. Android 6.0 运行时权限处理完全解析

    一.概述 随着Android 6.0发布以及普及,我们开发者所要应对的主要就是新版本SDK带来的一些变化,首先关注的就是权限机制的变化.对于6.0的几个主要的变化,查看查看官网的这篇文章http:// ...

  9. Android 6.0 - 动态权限管理的解决方案

    Android 6.0版本(Api 23)推出了很多新的特性, 大幅提升了用户体验, 同时也为程序员带来新的负担. 动态权限管理就是这样, 一方面让用户更加容易的控制自己的隐私, 一方面需要重新适配应 ...

随机推荐

  1. VS2015下的Android开发系列02——用VS开发第一个Android APP

    配置Android模拟器 这算是第一篇漏下说的,配置好VS的各参数,新建Android项目后,会发现菜单下的工具栏会多出Android相关的工具栏,红色圈出的就是AVD. 打开AVD后可以从模版处选一 ...

  2. 删除style的样式JQuery

      有些页面样式不规范,没有写在一个class里,例如:<div id="show" style="width:100px; padding-top:10px; f ...

  3. 浅谈CSS3 box-reflect 属性

    今天说一下 CSS3的box-reflect属性,也就是倒影特效. 语法: box-reflect:包括3个值. 1. direction 定义方向,取值包括 above . below . left ...

  4. 【NOIP2013】Day2不完全题解+代码

    T1 直接递归区间,从1-n开始,找到这个区间中的最小值然后将区间里的所有值都减去这个最小值 以被减去最小值之后的零点为分段分别递归处理即可. #include <algorithm> # ...

  5. nginx如何配置网页错误页面

    首先要在http模块中加入 fastcgi_intercept_errors on; 其次要在server模块中加入 error_page 403 404 /40x.html; location = ...

  6. html5的navigator调用手机震动

    navigator.vibrate(s) 或 navigator.webkitVibrate(s),不过该属性只在安卓系统有效.

  7. netty入门篇(1)

    上一篇 nio简介  下一篇 netty中级篇(2) 一.为什么选择Netty Netty是最流行的框架之一.健壮性.功能.性能.可定制性和可扩展性在同类框架中首屈一指,因此被大规模使用,例如ROCK ...

  8. [转]奇异值分解(We Recommend a Singular Value Decomposition)

    原文作者:David Austin原文链接: http://www.ams.org/samplings/feature-column/fcarc-svd译者:richardsun(孙振龙) 在这篇文章 ...

  9. FaceBook页面加载技术

    1. 技术背景 FaceBook页面加载技术 试想这样一个场景,一个经常访问的网站,每次打开它的页面都要要花费6 秒:同时另外一个网站提供了相似的服务,但响应时间只需3 秒,那么你会如何选择呢?数据表 ...

  10. db2 备份还原

    一.导入导出 ixf: db2 export to /tmp/xxx.csv of ixf lobs to . xml to . modified by codepage=1208 "sel ...