Glide-4.0.0プレースホルダー、エラー、GlideAppがなく、メソッドプレースホルダー、エラーが解決されない


84

Glide Androidライブラリを使用して画像をダウンロードし、に表示したいと思いますImageView

以前のバージョンでは、次のものを使用しました。

Glide.with(mContext).load(imgUrl)
                .thumbnail(0.5f)
                .placeholder(R.drawable.PLACEHOLDER_IMAGE_NAME)
                .error(R.drawable.ERROR_IMAGE_NAME)
                .crossFade()
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .into(imageView);

しかし、私はグライドのドキュメントを見ました:

GlideApp.with()代わりに使用すると書かれていますGlide.with()

私の懸念は、プレースホルダーの欠落、エラー、GlideApp、およびその他のオプションです。

私は使っている

 compile 'com.github.bumptech.glide:glide:4.0.0'

どこが間違っているのですか?ここを参照し

どのようにGlideApp.with()使用されていますか?

APIはと同じパッケージで生成され、デフォルトAppGlideModuleで名前が付けGlideAppられます。アプリケーションは、次のGlideApp.with()代わりにすべてのロードを開始することでAPIを使用できますGlide.with()

GlideApp.with(fragment)
   .load(myUrl)
   .placeholder(placeholder)
   .fitCenter()
   .into(imageView);


2
GlideAppについてご存知ですか?使用方法と使用時期?..
反対の

step2がありません。これを確認してください:bumptech.github.io/glide/doc/generatedapi.html
Oussema Aroua 2017

このドキュメントに従ってくださいbumptech.github.io/glide/doc/getting-started.html#applicatio‌ns–
Rohan Pawar

回答:


222

RequestOptionsを使用してみてください

RequestOptions requestOptions = new RequestOptions();
requestOptions.placeholder(R.drawable.ic_placeholder);
requestOptions.error(R.drawable.ic_error);

Glide.with(context)
     .setDefaultRequestOptions(requestOptions)
     .load(url).into(holder.imageView);

編集

.setDefaultRequestOptions(requestOptions)動作しない場合は、以下を使用して.apply(requestOptions)ください。

Glide.with(MainActivity.this)
            .load(url)
            .apply(requestOptions)
            .into(imageview);
 // or this
 Glide.with(MainActivity.this)
            .load(url)
            .apply(new RequestOptions().placeholder(R.drawable.booked_circle).error(R.drawable.booked_circle))
            .into(imageview);

 // or this
 Glide.with(MainActivity.this)
            .load(url)
            .apply(RequestOptions.placeholderOf(R.drawable.booked_circle).error(R.drawable.))
            .into(imageview);

2ボーナスを編集

Glide-4のその他の変更点は次のとおりです


@RiteshBhavsarが新しいGlidelibを使用してデバイスで機能していることもわかりません。確認できます
AskNilesh 2017

@NileshRathod RequestOptionsは、ビルダーのスタイルで使用する必要があります: RequestOptions requestOptions = new RequestOptions().placeholder(R.drawable.ic_placeholder).requestOptions.error(R.drawable.ic_error);
アレクサンダーUkhovを

1
これは、GlideAppを使用しない場合の回避策です。GlideAppを追加する方法については、github.com / Bumptech / glide / issues / 1945を参照してください。
CoolMind 2018

そのようなビットマップ出力を取得する方法はありますかビットマップビットマップ=グライド出力
VipulChauhan19年

30

Glideパッケージの依存関係compile 'com.github.bumptech.glide:glide:3.7.0'を使用する場合は、以下のコードを使用する必要があります。

GlideApp
    .with(your context)
    .load(url)
    .centerCrop()
    .placeholder(R.drawable.loading_image)
    .error(R.drawable.error_image)
    .into(myImageView);

注:ドキュメントと同様に、

丸い画像:CircleImageView / CircularImageView / RoundedImageViewは、TransitionDrawable(.crossFade()with .thumbnail()または.placeholder())およびアニメーションGIFに問題があることがわかっています。BitmapTransformationを使用してください(.circleCrop()はv4で使用可能になります)または.dontAnimate()で問題を修正します。

compile com.github.bumptech.glide:glide:4.1.1次に使用する最新の更新バージョンは、以下のコードを使用する必要があります。

RequestOptions options = new RequestOptions()
                    .centerCrop()
                    .placeholder(R.drawable.default_avatar)
                    .error(R.drawable.default_avatar)
                    .diskCacheStrategy(DiskCacheStrategy.ALL)
                    .priority(Priority.HIGH)
                    .dontAnimate()
                    .dontTransform();

Glide.with(this)
     .load(url)
     .apply(options)
     .into(imageView);

グライドの最新バージョン、バグ修正、機能をご覧ください。


glideは、githubで更新されていない、使用するのに
非常に

Ya @AnandSavjaniはGitHubで更新されていませんが、このリンクで更新を見つけることができますgithub.com/bumptech/glide/releases
ND1010_

1
グライドが気に入らない場合は、キャッシュを提供する画像、gifを読み込む独自の方法を作成し、それをgithubに自由にアップロードして、常に更新することができます
ND1010_ 2018

10

GlideAppを使用する場合はdependencies、スクリーンショットのように注釈プロセッサに追加する必要があります。

GlideAppをプロジェクトに追加する方法

次に、AppGlideModule実装をアプリケーションに含めます。

@GlideModule
public final class MyAppGlideModule extends AppGlideModule {}

@GlideModule注釈を忘れないでください。次に、プロジェクトをビルドする必要があります。そしてGlideApp、自動的に生成されます。


1
同期gradleの後で機能しませんでした。しかし、それを機能させるには、再構築を行う必要があります。
Ravi Yadav 2017

6

依存関係:

compile 'com.github.bumptech.glide:glide:4.1.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.1.1'

適切に注釈が付けられたAppGlideModule実装を追加します。

import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.module.AppGlideModule;

@GlideModule
public final class MyAppGlideModule extends AppGlideModule{}

さらに、ジャックオプションを使用した場合は、次の同様のエラーを回避するために、Android Studio3.0.0プレビューを使用する必要があります。

エラー:タスク ':app:transformJackWithJackForDebug'の実行に失敗しました。com.android.jack.ir.JNodeInternalError:java.lang.Exception:java.lang.AssertionError:まだ実装されていません


6

RequestOptionsも使用する必要はありません。

生成されたAPIは、RequestBuilderおよびRequestOptionsサブクラスへのアクセスを提供するGlideAppクラスを追加します。RequestOptionsサブクラスには、RequestOptionsのすべてのメソッドと、GlideExtensionsで定義されているすべてのメソッドが含まれています。RequestBuilderサブクラスは、applyを使用せずに、生成されたRequestOptionsサブクラスのすべてのメソッドへのアクセスを提供します。

グライドの使用:-

生成されたAPIのないリクエストは次のようになります。

Glide.with(fragment)
    .load(url)
    .apply(centerCropTransform()
        .placeholder(R.drawable.placeholder)
        .error(R.drawable.error)
        .priority(Priority.HIGH))
    .into(imageView);

GlideAppの使用:-

生成されたAPIを使用して、RequestOptions呼び出しをインライン化できます。

GlideApp.with(fragment)
    .load(url)
    .centerCrop()
    .placeholder(R.drawable.placeholder)
    .error(R.drawable.error)
    .priority(Priority.HIGH)
    .into(imageView);

生成されたRequestOptionsサブクラスを使用して、同じオプションのセットを複数のロードに適用することはできますが、ほとんどの場合、生成されたRequestBuilderサブクラスの方が便利です。



2

アプリのあらゆる場所で共通のプレースホルダーを使用する場合は、次のように行うことができます。

Glide v4からGlideModuleを作成しているので、このクラスをプロジェクトにコピーして貼り付けることができるので、GlideAppクラスを使用できます(その他の手順については、これに従ってください)

@GlideModule
public class SampleGlideModule extends AppGlideModule {
    @Override
    public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) {
        super.applyOptions(context, builder);
        builder.setDefaultRequestOptions(new RequestOptions().placeholder(R.drawable.logo).error(R.drawable.logo));
    }

    @Override
    public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) {
        super.registerComponents(context, glide, registry);
    }
}

ここですべてのリクエストオプションを指定してデフォルトとして設定できます

で使用.placeholderする必要のないこのクラスを作成するとGlideApp、自動的に適用されます。


1
RequestOptions options = new RequestOptions()
            .placeholder(R.drawable.null_image_profile)
            .error(R.drawable.null_image_profile);
    //.centerCrop()
    //.diskCacheStrategy(DiskCacheStrategy.ALL)
    //.priority(Priority.HIGH);

    Glide.with(context).load(imageUrl)
            .apply(options)
            .into(profileImage);

1
いくつかの説明を追加してください-だけでは無地のコードブロックは、すべてのことが有益ではありません
CertainPerformance
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.