web-dev-qa-db-ja.com

Android Glide:実際の画像を読み込む前にぼやけた画像を表示する

ユーザーにフルスクリーン画像を表示するAndroidアプリを開発しています。画像はサーバーから取得されます。画像を表示するためにGlideを使用しています。実際の画像を表示する前の画像画像がキャッシュされると、直接フルサイズの画像が表示されます。

画像表示フローは次のようになります。-初めて画像をダウンロードする場合は、最初に小さな縮尺の画像をダウンロードしてから、フル解像度の画像をダウンロードします。 -画像が以前にダウンロードされている場合は、フルスケール画像を直接表示します。

Glideライブラリには、ファイルがキャッシュに存在するかどうかを知らせるメソッドが見つかりません。

任意のアイデア、これを行う方法。

13
Abhishek Batra
Glide.with(context.getApplicationContext())
                        .load(Your Path)   //passing your url to load image.
                        .override(18, 18)  //just set override like this
                        .error(R.drawable.placeholder)
                        .listener(glide_callback)
                        .animate(R.anim.rotate_backward)
                        .centerCrop()
                        .into(image.score);
11
Hiren

このライブラリからアイデアを得るか、このライブラリを使用することができます。

Androidでぼかしと元の画像を作成する2つの方法。

1)Blur Image Server URLパスを最初にロードし、成功したビットマップキャッシングメカニズムを取得して、元の(大)Image Server URLパスをロードします。

ポイント1は可能です、私はあなたのために答えを得ました(あなたのサーバーチームにぼかし画像または低品質画像を取得してぼかしを行い、大きな画像をロードするように依頼してください)。 APKリンク

Glide.with(mContext)
    .load(image.getMedium())
            .asBitmap()
            .diskCacheStrategy(DiskCacheStrategy.ALL)
            .into(new SimpleTarget<Bitmap>() {
                @Override
                public void onResourceReady(Bitmap bitmap, GlideAnimation anim) {
                    // Do something with bitmap here.
                    holder.thumbnail.setImageBitmap(bitmap);
                    Log.e("GalleryAdapter","Glide getMedium ");

                    Glide.with(mContext)
                            .load(image.getLarge())
                            .asBitmap()
                            .diskCacheStrategy(DiskCacheStrategy.ALL)
                            .into(new SimpleTarget<Bitmap>() {
                                @Override
                                public void onResourceReady(Bitmap bitmap, GlideAnimation anim) {
                                    // Do something with bitmap here.
                                    holder.thumbnail.setImageBitmap(bitmap);
                                    Log.e("GalleryAdapter","Glide getLarge ");
                                }
                            });
                }
            });

2)FacebookのFrescoは、Android用の新しい画像ライブラリです。ライブラリを紹介する公式ブログ投稿はこちらです。ネットワークを介したプログレッシブJPEG画像のストリーミングをサポートします。これは、遅い接続で大きな画像を表示するのに非常に役立ちます。画像の品質が徐々に向上していることがわかります。

Facebook Frescoを使用したプログレッシブJPEG

5
Karthik Pugal

glide v4の場合:

Glide.with(context)
    .load(URL)
    .thumbnail(0.1f)
    .into(image_view)
5
itzhar

BitmapFactory.Options.inSampleSizeを使用して、イメージのダウンサンプリングバージョンを作成し、bothバージョンをアップロードします。サンプルイメージをロードし(時間がかかります)、より大きなバージョンがダウンロードされたら、それに切り替えます。 TransitionDrawableを使用してフェードトランジションを作成することもできます。

0
jv110

これは完璧な方法ではありませんが、最も簡単な方法です。

placeHolder画像をぼかしとして作成し、グライドに設定します。常にぼかし画像を表示し、実際の画像を読み込んだ後に表示されます。

このコードを参照してグライドを使用できます。

//crete this method into your Utils class and call this method wherever you want to use.
//you can set these placeHolder() and error() image static as well. I made it as comment inside this method, then no need to use [placeHolderUrl and errorImageUrl] parameters. remove it from this method.
public static void loadImage(final Activity context, ImageView imageView, String url, int placeHolderUrl, int errorImageUrl) {
    if (context == null || context.isDestroyed()) return;

    //placeHolderUrl=R.drawable.ic_user;
    //errorImageUrl=R.drawable.ic_error;
        Glide.with(context) //passing context 
                .load(getFullUrl(url)) //passing your url to load image.
                .placeholder(placeHolderUrl) //this would be your default image (like default profile or logo etc). it would be loaded at initial time and it will replace with your loaded image once glide successfully load image using url.
                .error(errorImageUrl)//in case of any glide exception or not able to download then this image will be appear . if you won't mention this error() then nothing to worry placeHolder image would be remain as it is.
                .diskCacheStrategy(DiskCacheStrategy.ALL) //using to load into cache then second time it will load fast.
                .animate(R.anim.fade_in) // when image (url) will be loaded by glide then this face in animation help to replace url image in the place of placeHolder (default) image.
                .fitCenter()//this method help to fit image into center of your ImageView 
                .into(imageView); //pass imageView reference to appear the image.
}
0
Abdul Rizwan