我正在使用ListView来显示与这些图像相关的一些图像和标题。我正在从互联网上获取图像。是否有一种方法可以延迟加载图像,以便在文本显示时,UI不会被阻止,图像在下载时显示?
图像总数不是固定的。
我正在使用ListView来显示与这些图像相关的一些图像和标题。我正在从互联网上获取图像。是否有一种方法可以延迟加载图像,以便在文本显示时,UI不会被阻止,图像在下载时显示?
图像总数不是固定的。
当前回答
1.Picasso允许在应用程序中轻松加载图像,通常只需一行代码!
使用渐变:
implementation 'com.squareup.picasso:picasso:(insert latest version)'
只有一行代码!
Picasso.get().load("http://i.imgur.com/DvpvklR.png").into(imageView);
2.Glide Android的图像加载和缓存库,专注于平滑滚动
使用渐变:
repositories {
mavenCentral()
google()
}
dependencies {
implementation 'com.github.bumptech.glide:glide:4.11.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
}
//对于简单视图:
Glide.with(this).load("http://i.imgur.com/DvpvklR.png").into(imageView);
3.湿壁画是一个在Android中显示图像的强大系统Fresco负责图像加载和显示到
壁画入门
其他回答
我使用droidQuery。从URL加载图像有两种机制。第一个(速记)简单地是:
$.with(myView).image(url);
这可以很容易地添加到ArrayAdapter的getView(…)方法中。
longhand方法将提供更多的控制,并具有此处未讨论的选项(如缓存和回调),但可以在此处找到将输出大小指定为200px x 200px的基本实现:
$.ajax(new AjaxOptions().url(url)
.type("GET")
.dataType("image")
.imageWidth(200).imageHeight(200)
.success(new Function() {
@Override
public void invoke($ droidQuery, Object... params) {
myImageView.setImageBitmap((Bitmap) params[0]);
}
})
.error(new Function() {
@Override
public void invoke($ droidQuery, Object... params) {
AjaxError e = (AjaxError) params[0];
Log.e("$", "Error " + e.status + ": " + e.error);
}
})
);
URLImageViewHelper是一个非常棒的库,可以帮助您做到这一点。
使用滑动库。它适用于我,也适用于你的代码。它也适用于图像和gif。
ImageView imageView = (ImageView) findViewById(R.id.test_image);
GlideDrawableImageViewTarget imagePreview = new GlideDrawableImageViewTarget(imageView);
Glide
.with(this)
.load(url)
.listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
return false;
}
})
.into(imagePreview);
}
您可以使用一些第三方库(如Piccaso或Volley)进行有效的延迟加载。您还可以通过实现以下内容创建自己的
用于从url下载图像的实现代码实现用于存储和检索图像的缓存机制(使用android的LruCache进行缓存)
看看Shutterbug,Applidium的轻量级SDWebImage(iOS上的一个不错的库)到Android的端口。它支持异步缓存,存储失败的URL,很好地处理并发,并包含有用的子类。
也欢迎拉取请求(和错误报告)!