几天前,我发布了支持库版本 v22.1.0 以及我见过DrawableCompat的新内容。
现在我的问题是DrawableCompat与普通Drawable有什么区别,它带来了什么好处以及何时以及如何使用它。
我已阅读Chris Banes' blog,但缺乏正确解释这是什么以及它对开发人员有用的方法。
答案 0 :(得分:4)
引用相关博文:
Lollipop中添加的Drawable着色方法对于让您动态着色资产非常有用。
此处,着色是指Theme.Material
/ Theme.AppCompat
使用灰度可绘制和应用色调(如colorPrimary
或colorAccent
)的方法,将它们绑定到自定义主题中一个应用程序这用于许多地方,特别是许多看到强调色的地方。
继续撰写博文:
AppCompat在v21支持库中有自己的实现,现在我们已经将它提取到support-v4中的DrawableCompat中供所有人使用。
因此,DrawableCompat
允许您将{tint-the-grayscale图像用作appcompat-v7
,用于着色drawable,返回到API Level 4.这与可用的类似着色方法形成对比在{Level 1}上从API级别21开始。特别是,如果您使用Drawable
创建自定义小部件和,则可以使用appcompat-v7
来允许您的小部件采用应用程序的配色方案。
DrawableCompat与普通Drawable有什么区别
DrawableCompat
偏离了典型的DrawableCompat
方法。像...Compat
这样的类是其祖先的替代品(例如NotificationCompat.Builder
)。在这种情况下,Notification.Builder
会将某些更改(如色调)应用于另一个DrawableCompat
,其他可绘制内容由Drawable
“包裹”。 DrawableCompat
只提供API和wrap / unwrap功能;它是您在应用中使用DrawableCompat
获得的Drawable
,而不是使用您开始使用的原始灰度wrap()
。