这是来自 Google 官方的 Material Design 培训教程的翻译,受个人水平所限,难免有翻译不对的地方,欢迎交流指正。
图片所具有的下面能力可以帮助你在应用程序中实现 material design。
- 图片着色。
- 抽取主色彩。
- 矢量图片。
这节课程教你如何在应用程序中使用这些特性。
对图片资源进行着色
在 Android 5.0 ( API 21) 及以上,你可以定义透明度对位图和 9 patch 图片进行着色。你可以使用颜色资源或者对应颜色资源的主题属性(如 ?android:attr/colorPrimary
)对他们进行着色。通常,你只需要一次创建这些资源并对他们自动着色来适应你的主题。
通过 setTint() 方法可以对 BitmapDrawable, NinePatchDrawable 或 VectorDrawable 对象应用着色。也可以在布局中使用 android:tint
和 android:tintMode
属性来设置着色的颜色和模式。
从图片中抽取主色彩
在 Android Support 库 r21 及以上版本中包含有 Palette 类,可以从一张图片中抽取主色彩。这个类可以抽取下面的突出色彩:
要抽取这些色彩,当你在加载图片时在后台线程里面传递 Bitmap 对象到 Palette.generate() 静态方法中。如果你没有使用线程,那边调用 Palette.generateAsync() 方法并提供一个监听器。
在 Palette 类中,使用获取方法来从图片获取主要色彩,如 Palette.getVibrantColor
。
在项目中使用 Palette 类时,需要添加下面的 Gradle 依赖到应用程序模块:
1 | dependencies { |
更多信息,可以查看 API 参考中的 Palette 类。
创建矢量图片
在 Android 5.0 (API 21) 及以上,你可以定义矢量图片,这些图片在缩放过程中不会丢失清晰度。对应于每种屏幕密度需要一个位图文件,所有的屏幕密度仅需要一个矢量文件。要创建矢量图片,你需要在 XML 文件中的 <vector>
元素中定义形状细节。
下面的实例定义了一个心形的矢量图片:
1 | <!-- res/drawable/heart.xml --> |
矢量图片在 Android 中表现为 VectorDrawable 对象。关于 pathData
语法的更多信息,可以查看 SVG 路径。矢量图片中动画属性相关的更多信息,可以查看动画矢量图片。