将图像从资源设置为可绘制的区别?

Mik*_*key 4 android

这个例子是针对setImageResource和setImageDrawable一样的背景吗?

那么首选的是什么?

MrJ*_*Jre 10

根据文档 setImageResource在UI线程上进行Bitmap读取和解码,这可能会导致延迟打嗝.所以如果你问setImageResource上面哪种情况是更好的选择,你的问题会更好setImageDrawable.

我的猜测setImageResource是用于延迟加载图像,并且setImageDrawable在视图启动期间已经通过Drawable加载图像时使用.哪一个最适合你可能取决于你是否有更严重的记忆限制; 根据我的经验,setImageResource几乎不需要.

并回答为什么你的代码不起作用; 这是因为您无法getDrawable()从resourceId 0 执行此操作,因为无法找到资源而抛出异常.由于setImageResource是延迟加载,在创建Drawable之前检查资源是否为0,因此不会抛出任何异常.你可以将它重构为一个if(checked) setImageDrawable(..) else setImageDrawable(null);