And*_*ter 20 android tint android-drawable android-5.0-lollipop
我正在开发新的Android L预览版,现在处理drawable上的着色概念.
我想知道Android L Developer Preview中是否有关于可绘制着色的新内容.
我读到这篇文档说:
Android L开发人员预览版使您可以将位图或九个修补程序定义为alpha蒙版,并使用颜色资源或解析为颜色资源的主题属性对其进行着色(例如,
?android:attr/colorPrimary).您只能创建一次这些资源并自动着色以匹配您的主题.
但我不明白它与以前的版本有什么不同.我知道如何使用ColorFilter或PorterDuffColorFilter在图像上应用色调.任何有关这方面的帮助将不胜感激.
ala*_*anv 21
从L开始,您可以在XML中指定色调.这些可以引用主题属性(如图所示),颜色状态列表,颜色资源或显式十六进制颜色代码.默认情况下,色调模式为SRC_IN,但可以使用android:tintMode属性将其设置为其他模式.
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/my_icon"
android:tint="?android:attr/colorControlNormal" />
Run Code Online (Sandbox Code Playgroud)
默认控件全部使用?android:attr/colorControlNormal用于正常状态(例如未选中复选框)和?android:attr/colorControlActivated(默认情况下映射到?android:attr/colorAccent)用于其激活状态(例如,已选中)复选框).
您可以在自己的应用程序drawable中使用这些属性来继承默认的框架颜色,或者您可以重新定义它们以更改默认或激活的控件颜色.您还可以引用特定于您的应用的属性(如图所示).
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/my_icon"
android:tint="?attr/myThemeAttribute" />
Run Code Online (Sandbox Code Playgroud)
LOG*_*TAG 13
Support V4库是许多Android支持库的基础,包含许多专注于使向后兼容性更容易的类.
DrawableCompat现在将可绘制的着色带回API 4:只需通过DrawableCompat.wrap(Drawable)和setTint(),setTintList()和setTintMode()包装Drawable就可以了:不需要创建和维护单独的drawable只支持多个颜色!
可绘制着色Lollipop中添加的Drawable着色方法对于让您动态着色资产非常有用.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);
Run Code Online (Sandbox Code Playgroud)
要记住的是,在你打电话之后
DrawableCompat.wrap(),你不能依赖与你给它的结果相同的结果.相反,您应该使用DrawableCompat.unwrap()检索原始Drawable.在内部,我们现在将Drawable包装在一个特殊的'tint drawable'中,将自动从指定的色调更新Drawable的滤色器.这允许我们处理ColorStateList实例.
但我想知道如何使用它xml !! 有选项叫
<TintImageView
android:layout_width=""
android:layout_height=""
android:src=""
android:backgroundTint="@color/green"/>
Run Code Online (Sandbox Code Playgroud)
但如果我想改变EditText TextView的drawable left | right图标,我觉得没有办法做到这一点!
| 归档时间: |
|
| 查看次数: |
14567 次 |
| 最近记录: |