【问题标题】:setImageResource Vs setDrawablesetImageResource 与 setDrawable
【发布时间】:2015-06-19 10:32:15
【问题描述】:

当涉及到 android 开发和性能时,如果你有 imageview 那么哪一个会更快或更好(反正有区别吗!):setImageResource 和 setDrawable 我知道一个带ID,另一个带drawable。但无论如何我都会从 ID 中获得 drwable。 你觉得哪个更好?

或者我应该避免一起使用 imageview 并使用加载/绘制位图? 太多的选择令人困惑 感谢cmets

【问题讨论】:

标签: android android-layout


【解决方案1】:

它们是不同的。来自Android documents

setImageResource: 这会在 UI 线程上进行位图读取和解码,这可能会导致延迟打嗝。

如果这是一个问题,请考虑使用 setImageDrawable(android.graphics.drawable.Drawable) 或 setImageBitmap(android.graphics.Bitmap) 和 BitmapFactory。

【讨论】:

  • 在我的 GridView 适配器中,我使用了 setImageResource 并且它在滚动时滞后。当我更改对 setImageBitmap 的调用时,GridView 开始平滑滚动。这两种方法的执行时间明显不同。但是,如果开发人员使用静态视图(不移动),使用什么没有区别。
  • 接受了新的答案 :)
  • setImageDrawable也太慢了
  • @konopko 你能详细说明一下吗?与 setImageResource 相比,setImageDrawable 明显慢吗?
【解决方案2】:

这些作为便利方法存在,因此您不必总是总是获取可绘制对象,或者总是必须传入资源 ID。不同的情况需要不同的方法。

总而言之,没有区别。使用适合您情况的方法。

【讨论】:

  • 谢谢,我想我用drawable还是bitmap没有区别吧?
  • 在源代码的某个地方,是的 ;) 但同样,ImageView 需要 Drawables 和 Bitmaps。无需将一个转换为另一个即可使用 ImageView 显示。
  • 请考虑更改标志以获得正确答案。这不是正确的答案。最有用的答案如下,评分最高。
  • 这是不正确的,如 Zorid 所述。赞成票不见了!
  • @Snake... 改变答案!我厌倦了在收件箱中看到我的公开失败。
【解决方案3】:

我认为setImageDrawable 更适合内存密集型操作——比如滚动 RecyclerView、从内存缓存中获取位图。但对于更简单的事情,setImageResource 是当今更好的 API。

【讨论】:

  • “setImageResource 是当今更好的 API”是什么意思?他们改进了它检索/缓存可绘制对象的方式?
  • @Farid 更好,因为它是一个更简单的API
猜你喜欢
  • 2013-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多