我刚刚将Android项目的构建目标升级到API 17,现在我收到有关不推荐使用setBackgroundDrawable的警告。答案似乎是使用setBackground,但在旧版本中不可用。
使用新方法有什么实际优势,或Google是否只想更改名称?如果两者的工作方式相同,我认为使用平台版本检查或反射使代码复杂化是没有意义的。
答案 0 :(得分:8)
使用新方法有什么实际优势,或Google是否只想更改名称?
他们似乎只想更改名称,请查看source code:
public void setBackground(Drawable background) {
//noinspection deprecation
setBackgroundDrawable(background);
}
@Deprecated
public void setBackgroundDrawable(Drawable background) { ... }
所有工作仍在setBackgroundDrawable()
完成。目前,您可以忽略弃用警告,但要了解将来的API setBackgroundDrawable()
将被删除。
如果您感到好奇,setBackgroundResource(int resid)
只需从资源ID中创建一个drawable并调用setBackground()
(再次调用setBackgroundDrawable()
)...