我有一个数组的所有URI的数组,我在列表中显示。 现在我想在后台运行一个线程,从web获取这些图像并将它们存储在SD卡上。 因此,当我单击列表中的特定元素而不是从Web获取时,它应该从新活动中的SD卡中获取。
我该怎么做?
答案 0 :(得分:2)
你可以尝试使用我的lazy-drawables框架(GPL v3许可):
https://github.com/rtyley/lazy-drawables
- 不幸的是它还没有为生产做好准备,但它试图处理的事情之中:
...一旦你设置了一个懒惰的可绘制会话,填充图像视图就像这样简单:
Drawable avatarDrawable = imageSession.get(someUserIdentifier); // doesn't block
imageView.setImageDrawable(avatarDrawable);
你没有关心它可能已经立即返回你一个正常的bitmapdrawable,或者可能产生一个异步任务并返回一个占位符drawable - drawable将更新自己并且当async时它是主机ImageView任务已经完成。
无论如何,这就是理论。到目前为止似乎有点工作,但有时自发的UI更新不会发生......不确定原因: - }
答案 1 :(得分:0)
通过matthiaskäppler检查WebImageView。
您可以使用所需的SD卡功能替换他的图像缓存方式。
答案 2 :(得分:0)
在显示您的用户界面时在后台使用AsyncTask下载
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
}
单击列表视图时,从sdcard加载图像
@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 );
...
...
...