仅当图像即将显示时才在列表视图中加载图像
Load images in listview only when they are about to display
我正在制作一个音乐播放器,到目前为止我所做的是我使用元数据文件在列表视图中创建了一个歌曲列表,其中包含它们的缩略图。
现在当我滚动我的列表时它滞后,这可能是因为图像加载。
我提到了 Google Play Music App,他们所做的是在滚动时获取专辑封面,因此滚动很流畅。
有什么方法可以实现这种功能吗?
你必须使用延迟加载图片,所以图片会在后台下载。
public class DownloadImage extends AsyncTask<ImageView, Void, Bitmap> {
ImageView imageView = null;
@Override
protected Bitmap doInBackground(ImageView... imageViews) {
this.imageView = imageViews[0];
return download_Image((String) imageView.getTag());
}
@Override
protected void onPostExecute(Bitmap result) {
imageView.setImageBitmap(result);
}
private Bitmap download_Image(String url) {
try {
URL ulrn = new URL(url);
HttpURLConnection con = (HttpURLConnection) ulrn.openConnection();
InputStream iS = con.getInputStream();
Bitmap bmp = BitmapFactory.decodeStream(iS);
return bmp;
} catch (Exception ex) {
ex.printStackTrace();
return null;
}
}
}
在您的适配器 getview
中调用此 class
imgThumbnail.setTag(<your image url>);
new DownloadImage().execute(imgThumbnail);
我正在制作一个音乐播放器,到目前为止我所做的是我使用元数据文件在列表视图中创建了一个歌曲列表,其中包含它们的缩略图。 现在当我滚动我的列表时它滞后,这可能是因为图像加载。 我提到了 Google Play Music App,他们所做的是在滚动时获取专辑封面,因此滚动很流畅。 有什么方法可以实现这种功能吗?
你必须使用延迟加载图片,所以图片会在后台下载。
public class DownloadImage extends AsyncTask<ImageView, Void, Bitmap> {
ImageView imageView = null;
@Override
protected Bitmap doInBackground(ImageView... imageViews) {
this.imageView = imageViews[0];
return download_Image((String) imageView.getTag());
}
@Override
protected void onPostExecute(Bitmap result) {
imageView.setImageBitmap(result);
}
private Bitmap download_Image(String url) {
try {
URL ulrn = new URL(url);
HttpURLConnection con = (HttpURLConnection) ulrn.openConnection();
InputStream iS = con.getInputStream();
Bitmap bmp = BitmapFactory.decodeStream(iS);
return bmp;
} catch (Exception ex) {
ex.printStackTrace();
return null;
}
}
}
在您的适配器 getview
中调用此 classimgThumbnail.setTag(<your image url>);
new DownloadImage().execute(imgThumbnail);