[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);

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です