setImageDrawable和setBackground在使用占位符时有何区别?

3

我正在尝试找到正确的方法来设置占位图像/资源(在我的情况下是VectorDrawable资源),用于在可用时将目标图像位图设置到ImageView中。

指南中有两种方法。我可以使用XML上的background属性或使用setBackground()进行编程,设置背景,然后使用setImageDrawable()设置目标图像。

第二种方法是首先使用setImageDrawable()设置占位符,然后再使用setImageDrawable()设置目标图像。

两种方法都能够实现目标,但是我注意到使用第一种方法时会出现一些UI滞后。我不确定这是否是由于方法引起的。

所以,我想知道,使用占位符的正确方法是什么,为什么?

谢谢。


1
你应该选择第二种方法。 - GOVIND DIXIT
2个回答

1
当ImageView的src值改变时,加载图像并不意味着更改背景。 在Android中,更改背景是昂贵的,当我们想要加载大量图片时(如ListView、RecyclerView等),情况会变得更糟。 为了获得更好的性能,应该改变图像的src,而不是更改图像的背景。
要更改图像的src,可以使用:
image.setImageResource()

或者

image.setImageDrawable()

更改适用于单个图像的背景

此外,所有图像加载器都支持占位符,如果使用相同的占位符,则无需手动设置。


1
第二种方法对于这个任务总是最好的选择。 但是,如果你想采用第一种方法,那么正确的使用方法是这样的。
int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
    setBackgroundDrawable();
} else {
    setBackground();
}

谢谢回复,GOVIND DIXIT。您能解释一下为什么这是最佳方法吗? - Tiano Manti
setBackground已经被弃用,需要API 16。这个链接可能会对你有所帮助:http://android-coding.blogspot.com/2013/12/setimagedrawable-vs-setimageresource-vs.html - GOVIND DIXIT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接