2

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

4

2 に答える 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

Download Images From Web と Lazy Loadを試してみる

于 2015-10-22T05:02:19.330 に答える