Android Volleyフレームワークでの画像読み込み

  1. 画像の読み込み

実際のアプリケーション開発では、ネットワークから画像をダウンロードして表示する必要が頻繁に発生します。Volleyフレームワークには、ネットワークから画像をダウンロードするためのいくつかの方法が提供されています。ここでは主に、ImageRequestとImageLoaderの2つの方法について説明します。

(1) ImageRequest

ImageRequestはStringRequestやJsonObjectRequestと同様に、Requestクラスを継承しており、使用方法も似ています。

    private void loadImageWithRequest(){
        ImageRequest imageRequest = new ImageRequest(
                "https://example.com/sample_image.jpg",
                new Response.Listener<Bitmap>() {
                    @Override
                    public void onResponse(Bitmap bitmapResponse) {
                        imageView.setImageBitmap(bitmapResponse);
                    }
                }, 0, 0, Config.RGB_565, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        imageView.setImageResource(R.drawable.default_image);
                    }
                });
        requestQueue.add(imageRequest);
    }

まずImageRequestを作成します。コンストラクタのパラメータには、画像のURL、ダウンロード成功時のコールバック関数(ここではダウンロードした画像をImageViewに表示しています)、表示する画像の幅と高さ(ここでは0に設定しているため、元のサイズで表示されます)、画像の品質、ダウンロード失敗時のコールバック関数(ここではデフォルト画像を表示)が含まれます。

(2) ImageLoader

場合によっては、ネットワークから画像をダウンロードするのに時間がかかることがあります。そのような場合、ダウンロード中に画像を表示しておくとユーザーエクスペリエンスが向上します。ImageLoaderはこの機能を実現できます。ImageLoaderはRequestクラスを継承しておらず、前述のRequestクラスとは若干異なる使用方法となります。まずImageLoaderとImageListenerを定義し、その後ImageLoaderのget()メソッドを呼び出して画像を取得します。

ImageLoaderの定義:

        ImageLoader imageLoader = new ImageLoader(requestQueue, new ImageCache() {
            @Override
            public void putBitmap(String imageUrl, Bitmap imageBitmap) {
            }

            @Override
            public Bitmap getBitmap(String imageUrl) {
                return null;
            }
        });

ここでrequestQueueはリクエストキューです。

ImageListenerの定義:

        ImageListener imageListener = ImageLoader.getImageListener(imageView, 
                R.drawable.loading_image, R.drawable.error_image);

ここでimageViewは画像を表示するViewです。後続の2つのパラメータは、それぞれダウンロード中に表示する画像と、ダウンロード失敗時に表示する画像です。ここではシンプルにするために、同じ画像を設定しています。

最後に、ImageLoaderのget()メソッドを使用して画像をダウンロードします。

        imageLoader.get("https://example.com/sample_image.jpg",
                imageListener, 400, 200);

パラメータには、画像のURL、ImageListener、表示する画像の幅と高さが含まれます。

タグ: Android Volley ImageRequest ImageLoader

6月8日 16:42 投稿