2012-08-24 60 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

相关问题