在Android L Developer Preview中,与之前版本相比,可绘制着色中有哪些新增function?

我正在开发新的Android L预览版,现在正在处理可绘制的着色概念。

我想知道在Android L Developer Preview中是否有关于可绘制着色的新内容。

我读了这个文档说:

Android L Developer Preview使您可以将位图或九个补丁定义为alpha蒙版,并使用parsing为颜色资源的颜色资源或主题属性(例如?android:attr/colorPrimary )对?android:attr/colorPrimary 。 您只能创build一次这些资源,并自动对其进行着色以符合您的主题。

但我不明白它与以前的版本有什么不同。 我知道如何使用ColorFilterPorterDuffColorFilter在图像上应用色调。 任何帮助,将不胜感激。

Solutions Collecting From Web of "在Android L Developer Preview中,与之前版本相比,可绘制着色中有哪些新增function?"

从L开始,可以用XML指定色彩。 这些可以引用主题属性(如图所示),颜色状态列表,颜色资源或明确的hex颜色代码。 默认情况下,着色模式是SRC_IN,但可以使用android:tintMode属性将其设置为其他内容。

 <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/my_icon" android:tint="?android:attr/colorControlNormal" /> 

默认的控件都是使用的,android:attr / colorControlNormal为它们的正常状态(例如未选中的checkbox)和android:attr / colorControlActivated(默认情况下映射到android:attr / colorAccent)checkbox)。

您可以在自己的应用程序绘图中使用这些属性来inheritance默认的框架颜色,也可以重新定义它们以更改默认或激活的控件颜色。 您也可以引用特定于您的应用程序的属性(如图所示)。

 <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/my_icon" android:tint="?attr/myThemeAttribute" /> 

与新的Android支持库22.1现在更多的支持着色可能!

支持V4库是许多Android支持库的基础,并包含许多专注于向后兼容的类。

DrawableCompat现在将可绘制的颜色带回到API 4:通过DrawableCompat.wrap(Drawable)和setTint(),setTintList()和setTintMode()简单地包装您的Drawable就可以工作:不需要创build和维护单独的drawable仅支持多个颜色!

来自Chris Banes博客的信息:

可绘制的着色Lollipop中添加的可绘制着色方法对于让您dynamic着色资产非常有用。 AppCompat在v21支持库中有自己的实现,现在我们已经将它提取到support-v4中的DrawableCompat中供大家使用。 知道它是如何工作是很重要的。

 Drawable drawable = ...; // Wrap the drawable so that future tinting calls work // on pre-v21 devices. Always use the returned drawable. drawable = DrawableCompat.wrap(drawable); // We can now set a tint DrawableCompat.setTint(drawable, Color.RED); // ...or a tint list DrawableCompat.setTintList(drawable, myColorStateList); // ...and a different tint mode DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_OVER); 

要记住的是,在你调用DrawableCompat.wrap() ,你不能依赖于你给它的相同types的结果。 相反,您应该使用DrawableCompat.unwrap()来检索原始的Drawable。

在内部,我们现在将您的Drawable包装在一个特殊的“色彩可绘制”中,将自动更新您的Drawable的色彩滤镜。 这使我们能够处理ColorStateList实例。

但我不知道如何使用它的XML! 有选项叫

 <TintImageView android:layout_width="" android:layout_height="" android:src="" android:backgroundTint="@color/green"/> 

但如果我想改变EditText TextView的可绘制的左右图标,那么我觉得没有办法做到这一点!