转载请注明出处: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

最新文章

  1. Linux学习日记-WCF RestFul的部署(三)
  2. dis进行反编译
  3. IE6-8下自定义标签的表现
  4. Android Studio 无法启动模拟器的一种可能是你装的是Ghost版的系统
  5. ThinkPHP 3.2.3 自动加载公共函数文件的方法
  6. Oracle错误:动态执行表不可访问,本会话自动统计被禁止,关闭自动统计之后的问题
  7. app整体搭建环境:tabBar切换不同控制器的封装(自定义导航+自定义uiviewcontroler+系统自带tabbar+自定义tabbarController)
  8. font awesome
  9. Hadoop Balance
  10. CentOS 6.5系统上安装SVN服务器端的方法及步骤
  11. C#虚方法和覆写方法
  12. xss框架的一些想法
  13. ThinkPHP--IS_AJAX
  14. Longest Substring Without Repeating Characters2015年6月9日
  15. MySQL自定义函数用法详解-复合结构自定义变量/流程控制
  16. leetcode-26.删除重复数组中的重复项
  17. jquery 操作表单的问题
  18. Vue.use源码分析
  19. react-navigation,StackNavigator,TabNavigator 导航使用
  20. Mac OS X下安装Python的MySQLdb模块【终结版】

热门文章

  1. [转载]ACE的陷阱
  2. 当array_filter函数的callback留空时 他会过滤掉所有键值为false的键
  3. java.lang.IllegalArgumentException: Page directive: invalid value for import
  4. 转:mysql日志(Windows下开启Mysql慢查询、通用日志)
  5. Effective C++笔记(五):实现
  6. golang基础之二-基本数据类型和操作符
  7. 【hdoj_1865】1sting(递推+大数)
  8. 洛谷 P1897电梯里的爱情 题解
  9. IEEEXtreme 10.0 - Dog Walking
  10. Java学习(API及Object类、String类、StringBuffer字符串缓冲区)