web-dev-qa-db-ja.com

グライドを使用してビットマップをImageViewにロードする

ビットマップをトリミングしてサイズ変更した後、Glideを使用してビットマップをImageViewにロードしたいと思います。

ImageView.setImageBitmap(bitmap);を使用したくないのは、大量の画像を読み込んでいるためメモリを消費している可能性があるためです。画像のサイズは小さいですが、画像を最適化することがわかっているため、Glideを使用するだけです。キャッシング。

私は this の投稿を読みましたが、実装しようとしたときに彼の解決策がよくわかりませんでした。したがって、誰かがよりクリーンで理解しやすいソリューションを持っているかもしれません。

これは、画像を取得してそれからビットマップを作成する私のコードです。

ImageView.setImageBitmap(bitmap);の代わりにglideを使用する必要があります。

new AsyncTask<String, Void, Void>() {
    Bitmap theBitmap = null;
    Bitmap bm = null;

    @Override
    protected Void doInBackground(String... params) {
        String TAG = "Error Message: ";
        try {
            //Load the image into bitmap
            theBitmap = Glide.
                    with(mContext).
                    load("http://example.com/imageurl").
                    asBitmap().
                    into(-1, -1).
                    get();

            //resizes the image to a smaller dimension out of the main image.
            bm = Bitmap.createBitmap(theBitmap, 0, 0, 210, 80);
        } catch (final ExecutionException e) {
            Log.e(TAG, e.getMessage());
        } catch (final InterruptedException e) {
            Log.e(TAG, e.getMessage());
        } catch (final NullPointerException e) {
            //
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void dummy) {
        if (null != theBitmap) {
            //Set image to imageview.
            **// I would like to Use Glide to set the image view here Instead of .setImageBitmap function**
            holder.mImageView.setImageBitmap(bm);

            holder.mImageView.setAdjustViewBounds(true);
            holder.mImageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        }
    }
}.execute();
8
Html Tosin

Glideで画像をロードするのにAsyncTaskは必要ありません。画像の非同期グライドロード。このコードを使用してみてください:

Glide.with(mContext)
                .load("http://example.com/imageurl")
                .asBitmap()
                .into(new SimpleTarget<Bitmap>() {
                    @Override
                    public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
                        // you can do something with loaded bitmap here

                        // .....

                        holder.mImageView.setImageBitmap(resource);
                    }
                });
18