2012-08-24 102 views
0

我正在做我的第一個應用程序,我很滿意,但我需要幫助的一件事:設置ImageView的圖像時,我應該這樣做嗎?我是否需要聲明一個可繪製變量?

if (blah > 0 && blah < 10) { 
    Drawable question_night = res.getDrawable(R.drawable.wt_you_should_wear_2); 
    questionImg.setImageDrawable(question_night); 
} 

或者這個?

if (blah > 0 && blah < 10){ 
    questionImg.setImageDrawable(res.getDrawable(R.drawable.wt_you_should_wear_2)); 
} 

我需要知道哪個好,就多VM堆如何使用它,它是否影響應用程序的速度,如果有問題(泄漏e.t.c.)。

在此先感謝。

+0

可繪製替代品= getResources()getDrawable(R.drawable.replacementGraphic)。 linearButton.setBackgroundDrawable(replacer); linearButton.invalidate(); – shassss

回答

5

它在性能或內存使用方面沒有任何區別。您可能會發現第一個選項更易於閱讀和調試。

(在另一方面,我該變量命名有所不同這並不完全清楚爲什麼question_night將是一個Drawable一個參考,而傳統的名稱將是questionNight反正。)

編輯:這個答案只有比較了從Java語言角度給出的兩個選項。 siliconeagle的答案直接傳遞資源,而不是通過Drawable去聽起來像是一個更清潔的方法給我。

4

你可以使用:

questionImg.setImageResource(R.drawable.wt_you_should_wear_2) 
+0

謝謝,但正如Jon Skeet所說,調試會更困難...... – iosjdjoisdfijodjoi893

+0

您爲什麼需要?我認爲他只是說它更具可讀性 - 因此可以進行調試。很顯然,我認爲直接設置圖像是更少的代碼,因此更具可讀性。 – siliconeagle

+0

也在上面的註釋代碼中,您不需要在設置drawable後調用invalidate。它在內部被調用。 – siliconeagle

相關問題