我有一个列表中显示的图像的所有URI的数组。 现在我想在后台运行一个线程,从web获取这些图像并将它们存储在SD卡上。 所以,当我点击列表中的某个元素而不是从网页抓取时,它应该从新的活动中从SD卡中获取。在显示列表视图的同时下载图像
我该怎么做?
我有一个列表中显示的图像的所有URI的数组。 现在我想在后台运行一个线程,从web获取这些图像并将它们存储在SD卡上。 所以,当我点击列表中的某个元素而不是从网页抓取时,它应该从新的活动中从SD卡中获取。在显示列表视图的同时下载图像
我该怎么做?
检查WebImageView matthiaskäppler。
你可以用你想要的SDcard功能代替他缓存图像的方式。
使用AsyncTask在后台下载,同时显示你的UI
File imageFile;
保存从网页图片
public View getView(int position, View convertView, ViewGroup parent) {
imageFile = new File("/sdcard/jorgesysTemp/" + Arraypicname(position);
if(!imageFile.exists()){
AsyncTaskProcess() //Download your images to sdcard
}
当您点击列表视图从SD卡加载图像
@Override
protected void onListItemClick(ListView l, View v, final int position, long id) {
//load from sdcard
Bitmap bitmapImg = BitmapFactory.decodeFile("/sdcard/jorgesysTemp/" + Arraypicname(position));
BitmapDrawable drawableImg = new BitmapDrawable(bitmapImg);
myimageview.setImageDrawable(drawableImg);
...
...
...
你可能尝试使用我的lazy-drawa统计局框架(GPL V3行货):
https://github.com/rtyley/lazy-drawables
-unfortunately它不是完全准备好生产还没有,但其中的东西它试图处理:
......一旦你有一个懒惰的抽拉会话建立,填充的形象图一样简单:
Drawable avatarDrawable = imageSession.get(someUserIdentifier); // doesn't block
imageView.setImageDrawable(avatarDrawable);
你不“T 护理它可能立即返回你一个正常的bitmapdrawable,或可能催生一个异步任务,并返回一个占位符绘制 - 提拉将更新本身和它的主机的ImageView当异步任务已经完成。
无论如何这就是理论。这似乎八九不离十,有点工作至今,但有时自发UI更新不会发生......不知道为什么: - }
阅读本线,有很多的信息。 http://stackoverflow.com/questions/541966/android-how-do-i-do-a-lazy-load-of-images-in-listview 我更喜欢Android系统的通用 - 图片 - 装载机库的https:/ /github.com/nostra13/Android-Universal-Image-Loader,但您也可以找到其他解决方案。希望能帮助到你。 – 2012-08-10 12:08:52