Android: 从服务器下载一堆图片
Android: download bunch of images from server
我正在开发测验应用程序。所有问题都在服务器端。当用户选择测验服务器类别 returns 时,json 文件包含问题、答案变体和图像 url。例如,在一个类别中,我有 10 个问题,其中 4 个问题需要加载图像。我从 json 文件中检查哪些文件有图像 url,我需要将它们下载到缓存或磁盘内存(不知道哪个解决方案更好)
问题:如何从服务器加载一堆图片并显示进度条?以及当用户想参加测验时如何访问下载的图像?
回答问题前需要先下载图片,因为回答问题会有时间限制
我认为你使用 https://github.com/nostra13/Android-Universal-Image-Loader。此库使用磁盘缓存来存储图像,因此如果图像在磁盘上可用,则不要下载图像。
要创建带更新的进度条,您必须创建一个 AsyncTask:http://developer.android.com/reference/android/os/AsyncTask.html。
文章的第一个例子是一个文件的下载。对于您的项目,在下载每个图像时调用 publishProgress()。
编辑:
private class DownloadImageTask extends AsyncTask<List<URL>, Integer, List<Bitmap>> {
ImageLoader imageLoader = ImageLoader.getInstance(); // Instance android-universal-image-loader
List<Bitmap> downloadedImage = new LinkedList<>();
protected List<Bitmap> doInBackground(List<URL>... urls) {
List<URL> yoururls = urls[0];
for(URL url : yoururls){
imageLoader.loadImage(url.toString(), new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
downloadedImage.add(loadedImage);
publishProgress(1);
}
});
}
return downloadedImage;
}
protected void onProgressUpdate(Integer... progress) {
//Update here your progress bar
}
protected void onPostExecute(List<Bitmap> result) {
//Close your progress bar
//Put your bitmap in your imageview
}
protected void onPreExecute(){
//Create your progress bar
}
}
要执行:
List<Bitmap> yourimages = new DownloadImageTask().execute(YOURLISTURL).get();
我正在开发测验应用程序。所有问题都在服务器端。当用户选择测验服务器类别 returns 时,json 文件包含问题、答案变体和图像 url。例如,在一个类别中,我有 10 个问题,其中 4 个问题需要加载图像。我从 json 文件中检查哪些文件有图像 url,我需要将它们下载到缓存或磁盘内存(不知道哪个解决方案更好)
问题:如何从服务器加载一堆图片并显示进度条?以及当用户想参加测验时如何访问下载的图像?
回答问题前需要先下载图片,因为回答问题会有时间限制
我认为你使用 https://github.com/nostra13/Android-Universal-Image-Loader。此库使用磁盘缓存来存储图像,因此如果图像在磁盘上可用,则不要下载图像。
要创建带更新的进度条,您必须创建一个 AsyncTask:http://developer.android.com/reference/android/os/AsyncTask.html。
文章的第一个例子是一个文件的下载。对于您的项目,在下载每个图像时调用 publishProgress()。
编辑:
private class DownloadImageTask extends AsyncTask<List<URL>, Integer, List<Bitmap>> {
ImageLoader imageLoader = ImageLoader.getInstance(); // Instance android-universal-image-loader
List<Bitmap> downloadedImage = new LinkedList<>();
protected List<Bitmap> doInBackground(List<URL>... urls) {
List<URL> yoururls = urls[0];
for(URL url : yoururls){
imageLoader.loadImage(url.toString(), new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
downloadedImage.add(loadedImage);
publishProgress(1);
}
});
}
return downloadedImage;
}
protected void onProgressUpdate(Integer... progress) {
//Update here your progress bar
}
protected void onPostExecute(List<Bitmap> result) {
//Close your progress bar
//Put your bitmap in your imageview
}
protected void onPreExecute(){
//Create your progress bar
}
}
要执行:
List<Bitmap> yourimages = new DownloadImageTask().execute(YOURLISTURL).get();