【Android开发技巧】Android开源项目-Glide的使

作者: 安卓Boy | 来源:发表于2017-01-27 12:07 被阅读77次

    Glide是一个Android图片加载库,由Goodle维护

    相关文档

    官方文档: https://github.com/bumptech/glide

    20170104142219390.png

    Gradle

    repositories {
      mavenCentral() // jcenter() works as well because it pulls from Maven Central
    }
    
    dependencies {
      compile 'com.github.bumptech.glide:glide:3.7.0'
      compile 'com.android.support:support-v4:19.1.0'
    }
    

    一个极好的Glide教程翻译系列:http://mrfu.me/2016/02/27/Glide_Getting_Started/

    为什么选择Glide

    当前较为知名的几个图片加载库是Universal-Image_loader、Glide、Fresco、Picasso。
    经过比较查询资料,得出以下结论 :

    UIL的库2015年年底作者已经停止维护,so,如果是新开始的项目建议不要使用了
    Gilde是Picasso的优化版,没有对比就没有伤害。so,Picasson pass。
    最后就是Facebook的Fresco,听说极为强大和高效率,但是大小有4M。
    最后Glide,google维护。Picasson的优化版,使用简单,也许没有Fresco那么强大,但是觉得完全可以hold住大部分项目。

    综上所述,最终决定选择Glide作为项目开发图片加载库。使用的时候再自己封装一层util层,如果之后开发需要替换也较为方便。

    如何使用

    // For a simple view:
    @Override public void onCreate(Bundle savedInstanceState) {
      ...
      ImageView imageView = (ImageView) findViewById(R.id.my_image_view);
    
      Glide.with(this).load("http://goo.gl/gEgYUd").into(imageView);
    }
    
    // For a simple image list:
    @Override public View getView(int position, View recycled, ViewGroup container) {
      final ImageView myImageView;
      if (recycled == null) {
        myImageView = (ImageView) inflater.inflate(R.layout.my_image_view, container, false);
      } else {
        myImageView = (ImageView) recycled;
      }
    
      String url = myUrls.get(position);
    
      Glide
        .with(myFragment)
        .load(url)
        .centerCrop()
        .placeholder(R.drawable.loading_spinner)
        .crossFade()
        .into(myImageView);
    
      return myImageView;
    }
    

    Glide 建造者要求最少有三个参数

    with(Context context) - 对于很多 Android API 调用,Context 是必须的。Glide 在这里也一样
    load(String imageUrl) - 这里你可以指定哪个图片应该被加载,同上它会是一个字符串的形式表示一个网络图片的 URL
    into(ImageView targetImageView) 你的图片会显示到对应的 ImageView 中。

    混淆处理

    -keep public class * implements com.bumptech.glide.module.GlideModule
    -keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
      **[] $VALUES;
      public *;
    }
    -keepresourcexmlelements manifest/application/meta-data@value=GlideModule
    

    除此之外,Glide还可以加载Gif,video。同时含有很多其他功能。详细可以在之前文档中查询。

    相关文章

      网友评论

        本文标题:【Android开发技巧】Android开源项目-Glide的使

        本文链接:https://www.haomeiwen.com/subject/jymfittx.html