在Android,资产或drawable中存储和获取图像的最佳方法是什么?

时间:2014-08-27 12:43:36

标签: android image performance

我必须列出具有国家名称的国家/地区,并在每个项目中显示其标志。

我有两种方法可以做到这一点:

1-将所有图像存储在' drawable'文件夹并按名称获取(不是通过ID,因为它们是根据国家/地区代码命名的) 见这里:How to get a resource id with a known resource name?

2-将他们存入资产'文件夹中。

在性能方面,哪种方式更好?

1 个答案:

答案 0 :(得分:1)

没有太大区别,但是,我认为使用drawable文件夹可以轻松获取图像(All将在R文件中编入索引,这使得加载它们的速度更快(也更容易!)。)和If你想从资产中使用它,那么你必须使用AssetManager然后使用AssetFileDescriptor你必须得到那些图像。

  • Assets也可以组织到文件夹层次结构中,而不是 资源支持。这是一种管理数据的不同方式。 虽然资源涵盖了大多数情况,但资产却有其资产 偶尔使用。

  • res/drawable目录中,每个文件都有一个预编译的ID 可以通过R.id. [res id]轻松访问。这很有用 快速轻松地访问图像,声音,图标

如果您将资产Uri传递给类似ImageView的内容,则框架将使用BitmapFactory从磁盘流式传输图像的缩减采样版本。 This是它在引擎盖下使用的技术。

出于性能原因,

Drawable不使用此技术。通常不希望将大图像存储为Drawable,并且Drawable加载在应用程序的生命周期中多次发生,因此它们完全从磁盘流式传输并缓存在内存中。

以上引用自:

1)This question on SO

2)This question on SO