[android] インターネット上の画像を非同期にダウンロードしてimageViewに反映
インターネット上の画像を非同期にダウンロードしてimageViewに反映
「AsyncTaskHttpRequest」というJavaファイルを作成し、下記コードを実装
package パッケージ名; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.nfc.Tag; import android.os.AsyncTask; import android.util.Log; import android.widget.ImageView; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class AsyncTaskHttpRequest extends AsyncTask{ private ImageView imageView; private Bitmap mask; public AsyncTaskHttpRequest(ImageView imageView){ this.imageView = imageView; } @Override protected Bitmap doInBackground(Uri.Builder... builder){ // 受け取ったbuilderでインターネット通信する HttpURLConnection connection = null; InputStream inputStream = null; Bitmap bitmap = null; try{ URL url = new URL(builder[0].toString()); connection = (HttpURLConnection)url.openConnection(); connection.setRequestMethod("GET"); connection.connect(); inputStream = connection.getInputStream(); bitmap = BitmapFactory.decodeStream(inputStream); }catch (MalformedURLException exception){ }catch (IOException exception){ }finally { if (connection != null){ connection.disconnect(); } try{ if (inputStream != null){ inputStream.close(); } }catch (IOException exception){ } } return bitmap; } @Override protected void onPostExecute(Bitmap result){ // インターネット通信して取得した画像をImageViewにセットする this.imageView.setImageBitmap(result); } }
使い方:
ImageView imageView = (ImageView)findViewById(R.id.testImageView); String stringUri = "画像URL"; Uri uri = Uri.parse(stringUri); Uri.Builder builder = uri.buildUpon(); AsyncTaskHttpRequest task = new AsyncTaskHttpRequest(imageView); task.execute(builder);