setImageDrawable与setBackground占位符

时间:2019-06-30 20:46:06

标签: java android

我正在尝试为设置的VectorDrawable设置占位符图像/资源(本例中为ImageView资源)的正确方法,并在目标图像位图可用时进行设置。

我在指南中看到了两种方法。我可以使用XML上的background属性设置背景,也可以使用setBackground()以编程方式设置背景。然后,我将使用setImageDrawable()设置目标图像。

第二种方法是将setImageDrawable()用作占位符,然后再将setImageDrawable()用作目标图像。

两种方法都可以,但是使用第一种方法时,我注意到一些UI滞后。我不确定这是否是该方法引起的。

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

谢谢。

2 个答案:

答案 0 :(得分:1)

第二种方法始终是完成此任务的最佳方法。 但是,如果您想采用第一种方法,那么正确的使用方法就是这样

int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
    setBackgroundDrawable();
} else {
    setBackground();
}

答案 1 :(得分:1)

在ImageView中加载图像时,更改src值意味着不更改背景。 更改背景对于android来说很昂贵,当我们想加载很多图像(如ListView,RecyclerView等)时,情况会变得更糟。 为获得更好的性能,应更改图片src,而不更改图片背景。

要更改图像src,您可以使用

image.setImageResource()

image.setImageDrawable()

更改适合单个图像的背景

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