解析Glideの使い方


目次
目次
1.概要
紹介:Glide、Androidの中の1つのピクチャーがオープンソースライブラリをロードするのです
Googleのオープンソースプロジェクト

主な役割:画像ロードを実現する
2.機能特徴
2.1機能リスト
機能リスト
Glideは、画像の非同期ロード機能を実現するだけでなく、Androidで画像をロードする際に解決しなければならない一般的な問題も解決していることがわかります.
次に、Glideの各機能点について詳しく説明します2.2機能紹介
2.2.1ピクチャロードについて
画像の非同期ロード(基礎機能)
ImageView targetImageView = (ImageView) findViewById(R.id.ImageView);
        String Url = "http://218.192.170.132/1.jpg";

//Glide            
//Glide       。
        Glide.with(context).load(Url).into(targetImageView);

//                :
//with(Context context)
//Context    Android API        ,       

//load(String imageUrl):      Url  。
//     ,              URL。

//into(ImageView targetImageView):          。

ロードサイズ
Glide.with(this).load(imageUrl).override(800, 800).into(imageView);
を設定する.
ロード中およびロード失敗ピクチャapiのplaceholder()、error()関数に多態実装を設定し、
Glide
.with(this)
.load(imageUrl)
.placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher).into(imageView);
を具体的に熟知することができます.
設定ロードアニメーション
Glide.with(this).load(imageUrl).animate(R.anim.item_alpha_in).into(imageView);
apiは、crossFade()R.animのような一般的なアニメーションもいくつか提供する.item_alpha_in
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
  <alpha android:duration="500" android:fromAlpha="0.0" android:toAlpha="1.0"/>
</set>

ロードするコンテンツ項目の中には、まず画像をダウンロードしてから合成する機能がたくさんあります.例えば、項目に現れた図文の混在など、目標の下でを実現するにはどうすればいいですか.
Glide.with(this).load(imageUrl).centerCrop().into(new SimpleTarget<GlideDrawable>() {
            @Override
            public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> glideAnimation) {
                imageView.setImageDrawable(resource);
            }
        });

2.2.2マルチスタイルメディアロード
   Glide
        .with(context)
        .load(imageUrl);
        .thumbnail(0.1f);//       :              
                           //     0.1f     ,Glide          10%   。
                          //        1000x1000   ,         100x100   。
        .asBitmap()//  gif     
        .asGif();//  gif    
        .into(imageView);

2.2.3キャッシュについて
ディスクキャッシュポリシー
Glide.with(this).load(imageUrl).diskCacheStrategy(DiskCacheStrategy.ALL).into(imageView);
//    
//ALL:            (     ,    )
//NONE:        。  ,             !
//SOURCE:      (          )。
//            ,      1000x1000      
//RESULT:        (     ,        (       )
の設定
メモリキャッシュをスキップする設定
Glide
.with(this)
.load(imageUrl)
.skipMemoryCache(true)
.into(imageView);
//        
//     Glide                 
//        ,          !Glide                     。
キャッシュのクリーンアップ
Glide.get(this).clearDiskCache();//                 
Glide.get(this).clearMemory();//          UI      
2.2.4その他の設定
ライフサイクル統合バインドライフサイクルを設定することで、Glideが提供する方法でより効率的にバインドできます.これにより、ピクチャのロード要求のライフサイクルを動的に管理することができます.
      .with(Context context)//   Context
      .with(Activity activity);//   Activity
      .with(FragmentActivity activity);//   FragmentActivity
      .with(Fragment fragment);//   Fragment
注意:
入力contextタイプはGlideロードピクチャの最適化度合いに影響する.
GlideはActivityのライフサイクルを監視し、Activityが破棄されたときに待機中のリクエストを自動的にキャンセルします.しかし、Application contextを使用すると、この最適化効果は失われます.

動的変換
Glide.with(this).load(imageUrl).centerCrop().into(imageView);
を設定する.
ダウンロード優先度
Glide.with(this).load(imageUrl).priority(Priority.NORMAL).into(imageView);
の設定
3.Demoインスタンス
Demoのコードの説明がないのは良い文章ではありません.Glideを使うことを一歩一歩学びましょう.
手順1:gradleに依存を追加する
 compile 'com.github.bumptech.glide:glide:3.7.0'

手順2:ネットワーク権限の追加
<uses-permission android:name="android.permission.INTERNET"/>

手順1と手順2はGlide使用の前提ですので、忘れないように!!!
手順3:MainActivityで
ImageView targetImageView = (ImageView) findViewById(R.id.ImageView);
        String Url = "http://218.192.170.132/1.jpg";

        Glide
                .with(this)
                .load(Url)
                .into(targetImageView);

他にも具体的な機能を配置する必要がある自分は私が書いた通りに配置すればいいですね~
4.特徴
4.1利点
多様なメディアロードGlideは、Gif、WebP、サムネイルをサポートするピクチャキャッシュだけではありません.さらにビデオライフサイクル統合バインディングライフサイクルを設定することで、Glideが提供する方法でバインディングをより効率的に行うことができ、画像のロード要求のライフサイクルをに動的に管理することができます.
効率的なキャッシュポリシーA.MemoryとDiskピクチャキャッシュB.Picassoは元のサイズのピクチャしかキャッシュしませんが、Glideは複数のサイズをキャッシュします.つまり、GlideはImageViewのサイズに応じて対応するサイズのピクチャサイズをキャッシュすることを意味します.
たとえば、ImageViewサイズは200で、原図は400400ですが、Glideを使用すると200規格の図がキャッシュされ、Picassoは400400規格しかキャッシュされません.この改良により、PicassoよりもGlideのロード速度が速くなります.トリミングのたびに再レンダリングするプロセスが少なく、非常に柔軟&ロード速度が速くなります.
C.メモリオーバーヘッドが小さいデフォルトのBitmap形式はRGB_565フォーマット、PicassoデフォルトはARGB_8888フォーマットで、このメモリのオーバーヘッドは半分小さくなります.
Androidは画像メモリ計算について、4種類あります.それぞれ:
ALPHA_8:1ピクセルあたり1 byteメモリARGB_4444:画素あたり2 byteメモリを占有
ARGB_8888:ピクセルあたり4 byteメモリ(デフォルト、色が最も細かい=表示品質が最も高い=メモリも最大)RGB_565:画素あたり2 byteメモリ(8 bit=1 byte)例:32ビットのPNG=ARGB_8888=1204 x 1024であれば、占有スペースは1024 x 1024 x(32/8)=4194304 kb=4 M程度であり、画像を解析する際にoomを回避しメモリを節約するためにARGB_を使用することが望ましい4444モード(メモリ容量を半分節約)
4.2欠点
使用方法が複雑Glideはその機能が強いため、使用方法が非常に多く、そのソースコードも相対的に複雑であるパッケージが大きい5.他のピクチャよりライブラリをロード(Picasso&Fresco)
Picasso GlideはPicassoベースで行われた二次開発と比較して多くの改良がなされているが、これによりパッケージがPicassoより大きくなったが、500 k未満(Picassoは100 k以上)であり、使い方は複雑であるが、やはりレベルは小さく、影響は大きくないである.
Frescoと比べるとFrescoの方が使いやすいが、性能(ロード速度&キャッシュ)はFresco に及ばない.