クイズアプリを開発しています。すべての質問はサーバー側にあります。ユーザーがクイズ サーバーのカテゴリを選択すると、質問、回答のバリエーション、画像の URL を含む json ファイルが返されます。たとえば、あるカテゴリには 10 の質問があり、そのうちの 4 つの質問には読み込む画像があります。json ファイルから画像の URL を確認し、それらをキャッシュまたはディスク メモリにダウンロードする必要があります (どちらのソリューションが優れているかわかりません)
。問題:サーバーから大量の画像を読み込み、進行状況バーを表示する方法 ユーザーがクイズをしたいときに、ダウンロードした画像にアクセスする方法は? 質問への回答には時間制限があるため、質問への回答を開始する前に画像をダウンロードする必要があります。
2 に答える
0
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();
于 2015-10-22T05:09:40.357 に答える
0
于 2015-10-22T05:02:19.330 に答える