Androidにてネットにある画像を読み込みたい、全てが終わるまで動作を止めておきたい
のですが、いまいちうまくいきません。
ネットに100個の画像があり、それらをBitmap配列に格納したいのですが、全てが読み終わるまでスプラッシュ画面を表示しておこうとおもいます。
こちらを参考にしましたが、
http://www.cocoaliz.com/android/index.php/10/
これは ImageView を利用したものらしく、Bitmapに格納する方法がいまいち使いかたがわかりません。
どこか参考になるサイトはないでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
ベストアンサー
Bitmap配列とは、Bitmapを格納した配列のことで良いでしょうか。
参考サイトを参考にかくならば、
Java
1public class ImageLoader extends AsyncTask<String, String, List<Bitmap>> { 2 3 private ArrayList<String> imageList; 4 5 public ImageLoader(ArrayList<String> list) { 6 // ImageViewを渡す 7 this.imageList = list; 8 } 9 10 11 @Override 12 protected List<Bitmap> doInBackground(String... arg0) { 13 // バックグラウンド処理 14 15 List<Bitmap> bitmapArrayList = new ArrayList<>(); 16 17 Bitmap bitmap = null; 18 19 20 for(String imageurl:imageList) { 21 try { 22 // 指定したURLの画像を読み込む 23 URL URL = new URL(imageurl); 24 InputStream input = URL.openStream(); 25 bitmap = BitmapFactory.decodeStream(input); 26 //bitmap配列に格納 27 bitmapArrayList.add(bitmap); 28 } catch (Exception e) { 29 e.printStackTrace(); 30 } 31 } 32 33 return bitmapArrayList; 34 } 35 36 protected void onPostExecute(List<Bitmap> res) { 37 //バックグラウンド処理が完了した時の処理 38 39 // Bitmapの配列をどうこうしたい処理をここに 40 } 41}
このような感じで行けると思います。
使い方はご参考になさっているサイトにあるように、
Java
1ImageLoader imageLoader = new ImageLoader(imageView); 2 imageLoader.execute("");
のような形式にすれば動きます。
imageLoader.execute()
この中の引数は利用していないので適当なものでも走ります。
ここが結構肝で、基本的にAsyncTaskは extendsしてあるAsyncTask<○,○,○>の<>内部分が大事で
左から順に
- doInBackgroundメソッドの引数の型,(backGroudで行いたい作業の際に渡すもの)
- onProgressUpdateメソッドの引数の型,(Progressを表示している場合の表示のアップデートの際に渡すもの)
- onPostExecuteメソッドの戻り値の方, (全ての処理が終わったさいに返すもの)
今回はdoInBackgroundの中のものはImageLoaderをインスタンス化している際に与えている為、第二引数は利用していません。
基本的になぜこんなものが必要か、という部分を語ると大変になってくるので割愛しますが、最近のAndroid開発ではAsyncTaskではなく、どちらかというとAsyncTaskLoaderクラスを使うことのほうが多いです。
最近の開発者はこのAsyncTaskの引数部分があまりに面倒なので使いません。
AsyncTaskについては、
AsyncTaskLoaderについては、
を確認していただければ初心者でもわかりやすい解説になっていると思います。
後は英語ですが公式リファレンスをご確認ください。
http://developer.android.com/intl/ja/reference/android/content/AsyncTaskLoader.html
http://developer.android.com/intl/ja/reference/android/os/AsyncTask.html
投稿2015/12/04 11:55
編集2015/12/16 13:45総合スコア30
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/12/04 14:25