2012-12-05 64 views
3

之間的差異我剛剛將我的Android項目的構建目標升級到API 17,並且現在我得到了關於setBackgroundDrawable被棄用的警告。答案似乎是使用setBackground,但這在舊版本中不可用。setBackgroundDrawable()和setBackground()

使用新方法有沒有什麼實際優勢,或者Google是否只想更改名稱?如果兩者的工作方式相同,我認爲沒有任何意見將代碼複雜化爲平臺版本檢查或反思。

回答

8

有沒有使用新的方法,任何實際的好處,還是谷歌只是想改名字?

他們似乎只是想改名字,看看source code

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

@Deprecated 
public void setBackgroundDrawable(Drawable background) { ... } 

所有的工作都在setBackgroundDrawable()仍在進行。現在,您可以忽略棄用警告,但明白將來某些API setBackgroundDrawable()將被刪除。


如果你很好奇,setBackgroundResource(int resid)只需從資源ID創建一個可繪製並調用setBackground()(再次呼籲setBackgroundDrawable())...

+2

對於任何人看着這個現在4.4仍具有相同的代碼,只是轉發給setBackgroundDrawable()http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4_r1/android/view/View.java#View.setBackground%28android .graphics.drawable.Drawable%29 – sgarman

+0

@sgarman感謝您的鏈接!我也在那裏檢查了5.1版本,並且仍然使用相同的代碼。 – Jenix

相關問題