Android 5.X新特性——Palette_陈建111的博客-程序员宅基地

技术标签: android群英传笔记  Android 5.X新特性  

        在Android的版本发展中,UI越来越成为Google的发展重心。这次的Android5.X创新地使用Palette来提取颜色,从而让主题能够动态适应当前页面地色调,做到整个App颜色基调和谐统一。

        Android内置了几种提取色调地种类,如下所示。

  • Vibrant(充满活力的)
  • Vibrant dark(充满活力的黑)
  • Vibrant light(充满活力的亮)
  • Muted(柔和的)
  • Muted dark(柔和的黑)
  • Muted light(柔和的亮)

        使用Palette的API,能够让我们从Bitmap中获取对于的色调,修改当前的主题色调。

        使用Palette首先需要在Android中引用相关的依赖,在项目列表上点击F4,然后在Module Setting的Dependencies选项卡中添加com.android.support:palette-v7:xx.x.x引用,重新Sync项目即可。通过传递一个Bitmap对象给Palette,并调用它的Palette.gemerate()静态方法或者Palette.gegerateAsync()方法来创建一个Palette。接下来,就可以使用getter方法来检索相应的色调,这些色调就是我们在上面列表中所列出来的色调。

        下面这个例子,演示了如何通过加载的图片的柔和色调来改变状态栏和Actionbar的色调,代码如下所示。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.test);
        //创建Palette对象
        Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
            @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
            @Override
            public void onGenerated(@NonNull Palette palette) {
                //通过Palette来获取对应的色调
                Palette.Swatch vibrant = palette.getDarkVibrantSwatch();
                //将颜色设置给相应的组件
                getSupportActionBar().setBackgroundDrawable(new ColorDrawable(vibrant.getRgb()));
                Window window = getWindow();
                window.setStatusBarColor(vibrant.getRgb());
            }
        });
    }
}

        通过以下方法来提取不同色调的颜色。

                Palette.Swatch vibrant = palette.getVibrantSwatch();//充满活力的
                Palette.Swatch vibrant = palette.getDarkVibrantSwatch();//充满活力的黑
                Palette.Swatch vibrant = palette.getLightVibrantSwatch();//充满活力的亮
                Palette.Swatch vibrant = palette.getMutedSwatch();//柔和的
                Palette.Swatch vibrant = palette.getDarkMutedSwatch();//柔和的黑
                Palette.Swatch vibrant = palette.getLightMutedSwatch();//柔和的亮

        在如上所示代码中使用getDarkVibrantSwatch()方法提取的色调效果如图所示。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/chenjian723122704/article/details/79032128

智能推荐

JAVA学习笔记Ⅹ——JAVA中的集合框架_DeepHao的博客-程序员宅基地

集合集合的数学定义:集合是指具有某种特定性质的具体的或抽象的对象汇总而成的集体。其中,构成集合的这些对象则称为该集合的元素,来源百度百科JAVA中集合定义:JAVA中集合是一种集合类,是一种工具,类似于容器,可以存储任意数量的具有共同属性的对象集合的作用:在类的内部对数据进行组织;简单而快速的搜索大量条目;有的集合接口,提供了一些列排列有序的元素,并且可以在序列中间快速的插入或删除有关元素;有的集合接口提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型。集

radiobutton 选中的项不能去掉选择的问题_weixin_34126215的博客-程序员宅基地

 代码如下:RadioButton rbtn = new RadioButton(getApplicationContext()); rbtn.setText(String.valueOf(item.get(0))); rbtn.setTextSize(16); rbtn.setTag(Integer.parseInt(String.valueOf(item....

android emulator: ERROR: unknown virtual device name:解决方法_hy451176411的博客-程序员宅基地

<br />本人搞了一天,总算解决了:<br />  先说对这个问题的解决方法:设置一个环境变量名为:ANDROID_SDK_HOME,它的值设置为创建模拟器的路径,我的设为“C:/Users/Administrator/.android”,这个路径创建模拟器的路径,至于为何这么设,它默认去这里找吧,不过实际情况,得根据eclipse默认选择的情况,它默认选择在那里呢?可以在eclipse中再新建一个模拟器,可以在新建窗口上面会看到有一个“LIst of existing Android Virtual D

android回归linux主线,【进阶】从linux到android,历程的方方面面_一只小呆橘阿的博客-程序员宅基地

原文链接 : Anthony的简书博客最近在阅读《Linux内核设计与实现》,这里做一下linux中进程相关的知识点整理,以及android中进程的浅析。下面1,2小节整理自《Linux内核设计与实现》 第三章《进程管理》和第四章《进程调度》。第3节整理android中进程的知识点。1 Linux中的进程管理以下内容整理自:《Linux内核设计与实现》 第三章《进程管理》1.1进程和线程进程是资源...

C语言入门-字符串_山丘i的博客-程序员宅基地

还是要继续学习,每天给自己打气。字符数组char word[] = {'H','e','l','l','o'};这不是c语言的字符串,不能用字符串的方式做计算一、字符串char word[] = {'H','e','l','l','o','\0'};区别就是最后多了一个0,这就成为了字符串以0(整数0)结尾的一串字符0或'\0'是一样的,但和'0'不同0标志字符串的结...

python求100到200的回文数_python3 练习题100例 (二十六)回文数判断_weixin_39611389的博客-程序员宅基地

Codeforces Round &num;342 &lpar;Div&period; 2&rpar;-B&period; War of the Corporationstime limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...第三个 andr...

随便推点

0926 - iOS之UITableView类_qq59700的博客-程序员宅基地

Table Views的介绍(link):--A table view displays a single column of vertically scrolling content, divided into rows and sections. 一个tableView用一列来展示多行视图,也可以设置若干行为一节,可以有多节。Table views are a collabor...

java游戏魔塔20层_魔塔全攻略之一——前20层_投研帮的博客-程序员宅基地

该楼层疑似违规已被系统折叠隐藏此楼查看此楼勇士:快走吧,外面还有很多怪物,我可能顾不上你。小偷:不,不,不会有事的。快说吧,叫我做什么?勇士:。。。。。。你会开门吗?小偷:那当然。勇士:那就请你帮我打开第二层的门吧!小偷:那个简单,不过,如果你能帮我找到一把嵌了红宝石的铁锒头的话,我还帮你打通第十八层的路。勇士:嵌了红宝石的铁锒头?好吧,我帮你找找。小偷:非常地感谢。一会我便会把第二层的门打开。...

E1000, E1000E and VMXNET3 performance test_weixin_33881753的博客-程序员宅基地

After reading some posts and blogs on vSphere5 and E1000E performance my curiosity was triggered to see if actually all these claims make sense and how vSphere actually behaves when testing...

Linux socket编程实战(阻塞)_pengshengli的博客-程序员宅基地

1.服务端#include&lt;sys/socket.h&gt;#include&lt;sys/types.h&gt;#include&lt;arpa/inet.h&gt;#include&lt;unistd.h&gt;#include&lt;stdio.h&gt;#include&lt;errno.h&gt;int main(int argc, char* argv[]){...

植物大战僵尸初探_Orcinus p的博客-程序员宅基地

植物大战僵尸初探1.0 修改阳光值在不断偏移定位到基址运行游戏,使用CE(Cheat Engine)加载游戏,想要修改阳光,可以通过人为的多次变化阳光的值,定位到动态地址。1.初始阳光 50 ,精准搜索阳光值50改变阳关的值,再次搜索,发现定位到数据,验证一下数据的是否决定阳光的值,双击value值修改阳光值立刻跟着改变,说明找对了位置。找的这个数据是动态地址。动态地址:临时用于存放数据的地址,黑色。特征:重新启动游戏地址发生变化静态地址:永久用于存放数据的地址,绿色。特征:重新

POI操作Excel_xcliang9418的博客-程序员宅基地

1 .POI工具包JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI 。jxl 只能操作以.xls为后缀的excel。而poi可以操作后缀为.xls 和 .xlsx两种格式的excel。POI全称 PoorObfuscation Implementation,利用POI接口可以通过JAVA操作Microsoftoffice 套件工具的读写功能。POI支持office的所有版本。...

推荐文章

热门文章

相关标签