我正在尝试制作一个列表视图,其中每一行都有一个文本视图和一个图像视图。在图像视图中,我正在尝试使用自定义适配器加载缩略图。我的问题是,如果我有大约 1000 个缩略图,将图像保存在 res/drawable 文件夹中并直接从那里加载是一个好主意(因为图像非常小,大约 2-4kb)。还是从网页 url 下载它们并将它们加载到 listView 中是一个更好的选择。有人可以帮助我找出更明智的解决方案。后来我可能会使用超过 1000 个缩略图。
谢谢
我正在尝试制作一个列表视图,其中每一行都有一个文本视图和一个图像视图。在图像视图中,我正在尝试使用自定义适配器加载缩略图。我的问题是,如果我有大约 1000 个缩略图,将图像保存在 res/drawable 文件夹中并直接从那里加载是一个好主意(因为图像非常小,大约 2-4kb)。还是从网页 url 下载它们并将它们加载到 listView 中是一个更好的选择。有人可以帮助我找出更明智的解决方案。后来我可能会使用超过 1000 个缩略图。
谢谢
如果您将所有 1000 张图像保存在 res 文件夹中,则应用程序大小将增加 2-4 Mb。
因此,最好使用延迟加载从 Web 服务器下载图像。因为,通常用户不会向下滚动到 100 多个项目。因此,要在 99% 的时间内显示 <100 张图像,将所有 1000 张图像都放在应用程序 res 文件夹中是没有用的。
在此处查看投票最高的答案:
这就是我在我的应用程序中使用的。对此非常满意。
当然,您可以将所有图像保存在可绘制文件夹中。只要您以后不打算添加图像,那将是一种更快、更清洁的解决方案。
您可以节省数据费用、电池寿命和编码工作 :)
我想说,1000 并不是一个很大的数字,因为您的图像真的那么小。但是,如果超出这个范围,那可能是个问题。
我也不认为每个用户都需要所有 1000 或 2000 张图像。这样,您最好从某个地方下载相关图像,而不是将其与应用程序打包在一起。
你应该下载拇指,毫无疑问。如何优化代码是通过对 Listview 中的所有视图进行软缓存。
@Archie.bpgc 答案是完美的。如果从 URL 异步加载图像会更好。如果您从服务器获取部分图像列表会更好。这意味着它第一次从服务器获得 20 个项目,之后它将从服务器获得下一个 20 个项目。
要从服务器异步加载图像,您可以使用 Picasso 小型库。这是毕业典礼
compile 'com.squareup.picasso:picasso:2.3.3'
这是你的ImageView
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
这是简单的java代码
ImageView imageView = (ImageView) findViewById(R.id.imageView);
Picasso.with(this)
.load("YOUR_IMAGE_URL")
.into(imageView);