setBackgroundDrawable()和setBackground()之间的区别

时间:2012-12-05 18:10:51

标签: java android

我刚刚将Android项目的构建目标升级到API 17,现在我收到有关不推荐使用setBackgroundDrawable的警告。答案似乎是使用setBackground,但在旧版本中不可用。

使用新方法有什么实际优势,或Google是否只想更改名称?如果两者的工作方式相同,我认为使用平台版本检查或反射使代码复杂化是没有意义的。

1 个答案:

答案 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())...