サーチ…


前書き

****警告このマニュアルは維持されておらず、頻繁に不正確です****

グライドの公式文書はもっと良い出典です:

Glide v4については、 http: //bumptech.github.io/glide/を参照してください。 Glide v3については、 https://github.com/bumptech/glide/wikiを参照してください

備考

Glideは、メディアのデコード、メモリとディスクのキャッシュ、およびリソースのプーリングをシンプルで使いやすいインタフェースにまとめた、Android用の高速で効率的なオープンソースのメディア管理および画像読み込みフレームワークです。

Glideは、ビデオ静止画、画像、アニメーションGIFの取り出し、デコード、および表示をサポートしています。 Glideには、開発者がほぼすべてのネットワークスタックにプラグインできる柔軟なAPIが含まれています。
デフォルトでは、GlideはカスタムHttpUrlConnectionベースのスタックを使用しますが、ユーティリティライブラリをGoogleのVolleyプロジェクトやSquareのOkHttpライブラリにプラグインします。

Glideの主な焦点は、あらゆる種類の画像のスクロールを可能な限りスムーズかつ高速に行うことですが、Glideは、リモート画像を取得、サイズ変更、および表示する必要があるほとんどすべての場合にも有効です。

ソースコードとその他のドキュメントはGitHubで入手できます: https : //github.com/bumptech/glide

あなたのプロジェクトにグライドを追加する

公式文書から:

Gradleの場合:

repositories {
  mavenCentral() // jcenter() works as well because it pulls from Maven Central
}

dependencies {
  compile 'com.github.bumptech.glide:glide:4.0.0'
  compile 'com.android.support:support-v4:25.3.1'
  annotationProcessor 'com.github.bumptech.glide:compiler:4.0.0'
}

Mavenの場合:

<dependency>
  <groupId>com.github.bumptech.glide</groupId>
  <artifactId>glide</artifactId>
  <version>4.0.0</version>
</dependency>
<dependency>
  <groupId>com.google.android</groupId>
  <artifactId>support-v4</artifactId>
  <version>r7</version>
</dependency>
<dependency>
  <groupId>com.github.bumptech.glide</groupId>
  <artifactId>compiler</artifactId>
  <version>4.0.0</version>
  <optional>true</optional>
</dependency>

ProGuard(DexGuard)の設定と使用方法によっては、proguard.cfgに以下の行を追加する必要があります(詳細はGlideのwikiを参照)。

-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public class * extends com.bumptech.glide.AppGlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$**     {
  **[] $VALUES;
  public *;
}

# for DexGuard only
-keepresourcexmlelements manifest/application/meta-data@value=GlideModule

画像の読み込み

ImageView

指定されたURL、Uri、リソースID、またはその他のモデルからImageView画像をロードするには:

ImageView imageView = (ImageView) findViewById(R.id.imageView);
String yourUrl = "http://www.yoururl.com/image.png";

Glide.with(context)
    .load(yourUrl)
    .into(imageView);

Urisの場合、 yourUrlをあなたのUri( content://media/external/images/1 )に置き換えます。 yourUrl場合、 yourUrlをリソースID( R.drawable.image )に置き換えます。

RecyclerViewとListView

ListViewまたはRecyclerViewでは、まったく同じ行を使用できます。

@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
    MyViewHolder myViewHolder = (MyViewHolder) viewHolder;
    String currentUrl = myUrls.get(position); 

    Glide.with(context)
        .load(currentUrl)
        .into(myViewHolder.imageView);
}

onBindViewHolderで読み込みを開始しない場合は、 ImageView変更する前にImageView Glideが管理している可能性があることを確認してくださいclear()

@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
    MyViewHolder myViewHolder = (MyViewHolder) viewHolder;
    String currentUrl = myUrls.get(position); 

    if (TextUtils.isEmpty(currentUrl)) {
        Glide.clear(viewHolder.imageView);
        // Now that the view has been cleared, you can safely set your own resource
        viewHolder.imageView.setImageResource(R.drawable.missing_image);
    } else {
        Glide.with(context)
            .load(currentUrl)
            .into(myViewHolder.imageView);
    }
}

グライドサークル変換(円形ImageViewでイメージをロード)

グライドを使用して円画像を作成します。

public class CircleTransform extends BitmapTransformation {

    public CircleTransform(Context context) {
        super(context);
    }

    @Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
        return circleCrop(pool, toTransform);
    }

    private static Bitmap circleCrop(BitmapPool pool, Bitmap source) {
        if (source == null) return null;

        int size = Math.min(source.getWidth(), source.getHeight());
        int x = (source.getWidth() - size) / 2;
        int y = (source.getHeight() - size) / 2;

        Bitmap squared = Bitmap.createBitmap(source, x, y, size, size);

        Bitmap result = pool.get(size, size, Bitmap.Config.ARGB_8888);
        if (result == null) {
            result = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
        }

        Canvas canvas = new Canvas(result);
        Paint paint = new Paint();
        paint.setShader(new BitmapShader(squared, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));
        paint.setAntiAlias(true);
        float r = size / 2f;
        canvas.drawCircle(r, r, r, paint);
        return result;
    }

    @Override public String getId() {
        return getClass().getName();
    }
}

使用法:

Glide.with(context)
    .load(yourimageurl)
    .transform(new CircleTransform(context))
    .into(userImageView);

デフォルトの変換

グライドには、2つのデフォルト変換、フィット中心と中央作図が含まれます。

フィットセンター:

Glide.with(context)
    .load(yourUrl)
    .fitCenter()
    .into(yourView);

フィットセンターは、AndroidのScaleType.FIT_CENTERと同じ変換を実行します。

センター作物:

Glide.with(context)
    .load(yourUrl)
    .centerCrop()
    .into(yourView);

Center cropはAndroidのScaleType.CENTER_CROPと同じ変換を実行します。

詳細については、 Glideのwikiを参照してください。

カスタムグライドターゲットで丸みを帯びたコーナー画像を滑らせる

まずユーティリティクラスを作成するか、このメソッドを必要なクラスで使用します

public class UIUtils {
public static BitmapImageViewTarget getRoundedImageTarget(@NonNull final Context context, @NonNull final ImageView imageView,
                                                        final float radius) {
    return new BitmapImageViewTarget(imageView) {
        @Override
        protected void setResource(final Bitmap resource) {
            RoundedBitmapDrawable circularBitmapDrawable =
                    RoundedBitmapDrawableFactory.create(context.getResources(), resource);
            circularBitmapDrawable.setCornerRadius(radius);
            imageView.setImageDrawable(circularBitmapDrawable);
        }
    };
}

画像を読み込む:

Glide.with(context)
     .load(imageUrl)
     .asBitmap()
     .into(UIUtils.getRoundedImageTarget(context, imageView, radius));

asBitmap()を使用するので、アニメーションは削除されます。この場所で独自のアニメーションを使用するには、animate()メソッドを使用します。

デフォルトのグライドアニメーションに同様のフェードインを施した例

Glide.with(context)
     .load(imageUrl)
     .asBitmap()
     .animate(R.anim.abc_fade_in)
     .into(UIUtils.getRoundedImageTarget(context, imageView, radius));

このアニメーションは、サポートライブラリのプライベートリソースであることに注意してください。変更または削除される可能性があるため、使用することはお勧めできません。

また、 RoundedBitmapDrawableFactoryを使用するにはサポートライブラリが必要です

画像のプリロード

リモートイメージをプリロードし、イメージが一度だけダウンロードされるようにするには:

Glide.with(context)
    .load(yourUrl)
    .diskCacheStrategy(DiskCacheStrategy.SOURCE)
    .preload();

次に:

Glide.with(context)
    .load(yourUrl)
    .diskCacheStrategy(DiskCacheStrategy.SOURCE) // ALL works here too
    .into(imageView);

ローカルイメージをプリロードし、変換されたコピーがディスクキャッシュ(およびおそらくメモリキャッシュ)にあることを確認するには:

Glide.with(context)
    .load(yourFilePathOrUri)
    .fitCenter() // Or whatever transformation you want
    .preload(200, 200); // Or whatever width and height you want

次に:

Glide.with(context)
    .load(yourFilePathOrUri)
    .fitCenter() // You must use the same transformation as above
    .override(200, 200) // You must use the same width and height as above
    .into(imageView);

プレースホルダとエラー処理

読み込み中にDrawableを追加する場合は、プレースホルダを追加できます。

Glide.with(context)
    .load(yourUrl)
    .placeholder(R.drawable.placeholder)
    .into(imageView);

ロードが何らかの理由で失敗した場合にDrawableを表示するには:

Glide.with(context)
    .load(yourUrl)
    .error(R.drawable.error)
    .into(imageView);

nullモデル(URL、Uri、ファイルパスなど)を提供する場合にDrawableを表示するには:

Glide.with(context)
    .load(maybeNullUrl)
    .fallback(R.drawable.fallback)
    .into(imageView);

カスタム変換なしで円形ImageViewにイメージをロードする

カスタムBitmapImageViewTargetを作成して、イメージをロードします。

public class CircularBitmapImageViewTarget extends BitmapImageViewTarget
{
    private Context context;
    private ImageView imageView;

    public CircularBitmapImageViewTarget(Context context, ImageView imageView)
    {
        super(imageView);
        this.context = context;
        this.imageView = imageView;
    }
    
    @Override
    protected void setResource(Bitmap resource)
    {
        RoundedBitmapDrawable bitmapDrawable = RoundedBitmapDrawableFactory.create(context.getResources(), resource);
        bitmapDrawable.setCircular(true);
        imageView.setImageDrawable(bitmapDrawable);
    }
}

使用法:

Glide
    .with(context)
    .load(yourimageidentifier)
    .asBitmap()
    .into(new CircularBitmapImageViewTarget(context, imageView));

グライド画像の読み込みに失敗しました

Glide
        .with(context)
        .load(currentUrl)
        .into(new BitmapImageViewTarget(profilePicture) {
    @Override
    protected void setResource(Bitmap resource) {
        RoundedBitmapDrawable circularBitmapDrawable =
                RoundedBitmapDrawableFactory.create(context.getResources(), resource);
        circularBitmapDrawable.setCornerRadius(radius);
        imageView.setImageDrawable(circularBitmapDrawable);
    }

    @Override
    public void onLoadFailed(@NonNull Exception e, Drawable errorDrawable) {
        super.onLoadFailed(e, SET_YOUR_DEFAULT_IMAGE);
        Log.e(TAG, e.getMessage(), e);
    }
});

ここでSET_YOUR_DEFAULT_IMAGE場所あなたは、任意のデフォルト設定することができDrawable 。画像の読み込みに失敗した場合、この画像が表示されます。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow