转载请注明出处:http://blog.csdn.net/bbld_/article/details/40584331

翻译自:http://developer.android.com/training/material/drawables.html

以下的几点drawables 的功能帮助你在你的app中实现material design:

l  可绘制着色

l  突出的颜色提取

l  矢量可绘性

本章节向你展示了怎么在你的app中使用这些功能。

色调Drawable资源

假设使用Android5.0(API级别21)以上的系统版本号,你能够着色位图和9patch图作为透明度蒙板。你能够使用颜色资源或者主题属性中的颜色资源(比如,?android:attr/colorPrimary)给它们着色。通常。你仅仅需一次就可以创建这些资源,并自己主动将它们上色以匹配你的主题。

你能够使用setTint()方法给位图资源或者9patch资源对象着色。你还能够在你的布局中使用android:tint属性和android:tintMode属性设置着色的颜色和模式。

从图像中提取突出的颜色

Android r21或以上的支持库中包括了Palette类,它能让你从图像中提取突出的颜色。这个类能提取下面突出的颜色:

l  Vibrant(充满活力的)

l  Vibrant dark(充满活力的黑)

l  Vibrant light(充满活力的亮)

l  Muted(柔和的)

l  Muted dark(柔和的黑)

l  Muted lighr(柔和的亮)

要提取这些颜色,在你载入图片的后台线程中传递一个位图对象给Palette.generate()静态方法。假设你不适用线程,则调用Palette.generateAsync()方法而且提供一个监听器去替代。

你能够在Palette类中使用getter方法来从检索突出的颜色,比方Palette.getVibrantColor。

要在你的项目中使用Palette类,添加以下的Gradle依赖到你的程序的模块(module)中:

dependencies {
...
compile 'com.android.support:palette-v7:21.0.+'
}

补充:在Eclipse中使用Palette类:

非常easy,把sdk里的extras里的v7支持库里的palette支持jar包拷贝到你项目的libs目录就可以。

很多其它的信息。请參阅Palette类的API文档说明

创建矢量(vector)Drawables

在Android 5.0(API级别21)或以上的系统中。则能够定义矢量drawables。它能够在不失清晰度的情况下进行缩放。你只须要须要一个矢量图片的资源文件,而须要为每一个屏幕密度设置一个资源文件。要创建一个矢量图片,你须要定义形状元素的细节在<vector>XML文件里。

以下的样例定义了一个心形的矢量图像:

<!-- res/drawable/heart.xml -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
<!-- intrinsic size of the drawable -->
android:height="256dp"
android:width="256dp"
<!-- size of the virtual canvas -->
android:viewportWidth="32"
android:viewportHeight="32"> <!-- draw a path -->
<path android:fillColor="#8fff"
android:pathData="M20.5,9.5
c-1.955,0,-3.83,1.268,-4.5,3
c-0.67,-1.732,-2.547,-3,-4.5,-3
C8.957,9.5,7,11.432,7,14
c0,3.53,3.793,6.257,9,11.5
c5.207,-5.242,9,-7.97,9,-11.5
C25,11.432,23.043,9.5,20.5,9.5z" />
</vector>

矢量图像在Android中被表示为VectorDrawable对象。

很多其它有关pathData语法的信息,请參阅SVG
Path
的文档參考。很多其它有关动画矢量drawable属性,请參阅AnimatingVector Drawables(Defining Custom Animations(自己定义动画))

Demo演示效果:

demo源代码下载地址:http://download.csdn.net/detail/bbld_/8094905

Android Material Design-Working with Drawables(使用Drawable)-(五)的更多相关文章

  1. Android Material Design 兼容库的使用

    Android Material Design 兼容库的使用 mecury 前言:近来学习了Android Material Design 兼容库,为了把这个弄懂,才有了这篇博客,这里先推荐两篇博客: ...

  2. Android Material Design Ripple Effect在Android5.0(SDK=21)以下Android版本崩溃问题解决

    Android Material Design Ripple Effect在Android5.0(SDK=21)以下Android版本崩溃问题解决 附录1的Android Ripple Effect水 ...

  3. Android Material Design : Ripple Effect水波波纹荡漾的视觉交互设计

     Android Material Design : Ripple Effect水波波纹荡漾的视觉交互设计 Android Ripple Effect波纹荡漾效果,是Android Materia ...

  4. Android Material Design的FloatingActionButton,Snackbar和CoordinatorLayout

    如果是为了兼容低版本的Android系统,则需要引用Android Material Design的扩展支持库,我在之前的一篇文章张,较为详细的说明了如何导入Android Material Desi ...

  5. MaterialEditText——Android Material Design EditText控件

    MaterialEditText是Android Material Design EditText控件.可以定制浮动标签.主要颜色.默认的错误颜色等. 随着 Material Design 的到来, ...

  6. Android Material Design控件学习(三)——使用TextInputLayout实现酷市场登录效果

    前言 前两次,我们学习了 Android Material Design控件学习(一)--TabLayout的用法 Android Material Design控件学习(二)--Navigation ...

  7. Android Material Design简单使用

    吐槽 作为一个 Android developer,没有什么比拿着 UI 设计的一堆 iOS 风格的设计 来做需求更恶心的了,基本所有空间都要照着 iOS 来画一遍,Material Design 辣 ...

  8. Android Material Design NavigationView 及 Palette 颜色提取器

    DrawerLayout + NavigationView DrawerLayout布局,通常在里面添加两个子控件,程序主界面添加到NavitagionView前面. <android.supp ...

  9. Android material design support library -- CollapsingToolbarLayout简介

    本文是codetrick上material design support library教程的第三篇,主要讲的是CollapsingToolbarLayout的概念和应用方法. 原文链接:Materi ...

随机推荐

  1. 码源中国.gitignore忽略文件配置

    码源中国.gitignore忽略文件配置 ## Ignore Visual Studio temporary files, build results, and ## files generated ...

  2. JSOI 2017 Round 1滚粗记

    day0 到常州一中报道,吃了午饭,好像这次有小火锅. 然后下午听JYY讲线性规划...好神啊. 晚上去试机,机子上没有npp,只有linux下的codeblocks,敲起来一顿一顿的...后来被迫使 ...

  3. 设计模式之笔记--代理模式(Proxy)

    代理模式(Proxy) 定义 代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问. 类图 描述 Subject,定义了ConcreteSubject和Proxy的共用接口,这样就可以 ...

  4. acm专题--并查集

    题目来源:http://hihocoder.com/problemset/problem/1066 #1066 : 无间道之并查集 时间限制:20000ms 单点时限:1000ms 内存限制:256M ...

  5. 完全禁用Wordpress的升级功能

    wordpress自己带有一个自动升级的功能,也就是说,如果wp检测到官方已经有新的升级可用的话他就会自己升级上去.这可能对于某些场合是个不错的功能,但是对于一些已经对系统大量魔改或者对插件稳定性不抱 ...

  6. IEEEXtreme 10.0 - Mysterious Maze

    这是 meelo 原创的 IEEEXtreme极限编程大赛题解 Xtreme 10.0 - Mysterious Maze 题目来源 第10届IEEE极限编程大赛 https://www.hacker ...

  7. hdu4796

    4月真是没写啥题,这题还是月初写的…… 不错的插头dp,首先由n和m的范围知肯定是轮廓线是横向划的 问题的难点在于怎么处理下面两个问题 1.怎么处理独立插头 2.怎么处理完全将W和L左右隔开 先说独立 ...

  8. electron 使用中的注意事项

    一.ELECTRON引用JQUERY.JS electron不能像正常的html文件引用jq.js那样(为嘛不造),elecron引用jq.js的方式为: <script>window.$ ...

  9. 在linux下安装sbt

    1.到官方网站下载deb包,下载地址:https://dl.bintray.com/sbt/debian/sbt-1.0.3.deb 2.点击下载的deb包进行安装 3.安装完成后,在terminal ...

  10. python爬虫实战(四)--------豆瓣网的模拟登录(模拟登录和验证码的处理----scrapy)

    在利用scrapy框架爬各种网站时,一定会碰到某些网站是需要登录才能获取信息. 这两天也在学习怎么去模拟登录,通过自己码的代码和借鉴别人的项目,调试成功豆瓣的模拟登录,顺便处理了怎么自动化的处理验证码 ...