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

ola*_*ane 3 java android

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

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

Sam*_*Sam 8

使用新方法有什么实际优势,或Google是否只想更改名称?

他们似乎只想更改名称,看看源代码:

public void setBackground(Drawable background) {
    //noinspection deprecation
    setBackgroundDrawable(background);
}

@Deprecated
public void setBackgroundDrawable(Drawable background) { ... }
Run Code Online (Sandbox Code Playgroud)

所有的工作仍然完成setBackgroundDrawable().目前,您可以忽略弃用警告,但要了解将来的API setBackgroundDrawable()将被删除.


如果你很好奇,setBackgroundResource(int resid)只需从资源ID和调用setBackground()(再次调用setBackgroundDrawable())创建一个drawable ...

  • 对于现在正在看这个的人来说,4.4 STILL具有相同的代码,只能转发到setBackgroundDrawable()http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4_r1/机器人/视图/ View.java#View.setBackground%28android.graphics.drawable.Drawable%29 (2认同)