转载请注明 http://blog.csdn.net/eclipsexys 翻译自Developer Android,时间仓促,有翻译问题请留言指出,谢谢
Drawable
通过可绘制了以下功能帮助您实现材料设计你的应用程序:
可绘制着色
突出的颜色提取
矢量可绘
这一课将告诉您如何使用您的应用程序这些功能。
可调色的Drawable资源
采用Android5.0(API等级21)以上,则可以着色定义为透明遮罩位图和nine-patches图。您可以调整它们的色彩资源或主题属性,以便于解决颜色资源(例如,?android:attr/colorPrimary
)。通常情况下,您将创建这些资产只有一次,并自动将它们上色,以符合您的主题。
您可以将色彩以BitmapDrawable或NinePatchDrawable对象与setTint()方法。您还可以设置色调的颜色和模式,在不同的界面与android:tint
和android:tintMode
属性,从图像中提取颜色突出。
Android的支持库R21及以上包括面板类,它可以让你从图像中提取突出的颜色。这个类中提取以下突出的颜色:
充满活力
充满活力的黑暗
充满活力的光
静音
柔和的暗
柔和的光线
要提取这些颜色,传递一个Bitmap对象到您加载图片的Palette.generate()静态方法在后台线程。如果你不能使用线程调用Palette.generateAsync()方法,并提供了一个监听器来代替。
你可以从图像使用getter方法??在面板类,如Palette.getVibrantColor突出的颜色。
要使用调色板类项目,以下摇篮依赖添加到您的应用程序的模块:
dependencies { ... compile ‘com.android.support:palette-v7:+‘ }
创建VerctorDrawable
在安卓5.0(API等级21)以上,则可以定义向量可绘制对象,其中规模又不失清晰。你的矢量图像仅需要一个资源文件,而不是一个资产文件中的位图图像的情况下,每个屏幕密度。要创建一个矢量图像,你定义了一个<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的路径参考。有关动画的矢量可绘制对象的属性的详细信息,请参阅矢量动画效果可绘制对象。