一. Glide加载

Glide.with(this).load("http://p0.qhimg.com/t015f3654b694ad2f8a.jpg").into(imageView);

效果图

compile files('libs/glide-3.7.0.jar')

二. Picasso

    Picasso.with(getApplicationContext()) //
                        .load("http://p0.qhimg.com/t015f3654b694ad2f8a.jpg") //加载地址
                        .placeholder(R.mipmap.ic_launcher)
                        //占位图
                        .error(R.mipmap.ic_launcher) //加载失败的图
                        .fit() //充满
                        .tag(getApplicationContext()) //标记
                        .into(imageView);//加载到的ImageView

在Build注入

//    首先在项目中引入picasso(以gradle为例)
//    compile 'com.squareup.picasso:picasso:2.5.2'

三. ImageLoader

要使用ImageLoader必须先实现全局的实例化,这样可以避免每次使用都要重复代码 我们自定义一个MyApplication继承自Application,代码如下

  • 然后需要在Manifest文件中写上代码:

    //就是这一行代码,要加在application标签下
            android:name=".MyApplication"

Build注入:

//ImageLoader
//    compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'

  • 然后再代码中使用就可以了
  • String urls = "http://p0.qhimg.com/t015f3654b694ad2f8a.jpg"; DisplayImageOptions options = new DisplayImageOptions.Builder() .cacheInMemory(true)//在内存中缓存 .cacheOnDisc(true)//存储卡的缓存,需要添加相应的存储卡读写权限 .showImageOnFail(R.mipmap.ic_launcher)//加载失败的显示的图片 .showImageOnLoading(R.mipmap.ic_launcher)//加载过程中显示的图片 .build(); ImageLoader.getInstance().displayImage(urls, imageView, options);//加载图片

四. Fresco

  • 这个框架可以用于加载网络上的gif图片 使用这个框架需要导入两个包

  • 同时我们在布局中引入这个框架中自带的SimpleDraweeView控件

  • 注意这个使用的时候不要将它的宽高设置为包含内容,它不支持这个属性,我们必须设置具体的宽高才可以

  • public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    //注意导的哪一个包名,有恨多个,别混乱了
        //一共导入了两个包啊,千万记住了啊,用来加载gif动图的框架
        private Button button, button2;
        private SimpleDraweeView simpleDraweeView;
        //simpleDraweeView控件不支持包含内容的宽高设置,必须设置明确的大小

    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //由于我们在布局中使用了第三方框架的控件,所以我们必须在设置布局之前进行第三方框架的initialize()方法
            Fresco.initialize(this);
            setContentView(R.layout.activity_main);

    init();
        }

    private void init() {
            button = (Button) findViewById(R.id.button);
            button.setOnClickListener(this);
            simpleDraweeView = (SimpleDraweeView) findViewById(R.id.simpleDraweeView);
        }

    @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.button:
                    DraweeController animatedGifController = Fresco.newDraweeControllerBuilder()
                               //设置使其支持动画
                            .setAutoPlayAnimations(true)
                            .setUri(Uri.parse("http://img4.duitang.com/uploads/item/201306/10/20130610100354_3WrWN.gif"))
                            .build();
                    simpleDraweeView.setController(animatedGifController);
                    break;
            }
        }
    }

  • 关于SimpleDraweeView 的相关属性 fresco是自定义的属性标签
  • xmlns:fresco="http://schemas.android.com/apk/res-auto"
    1
    <com.facebook.drawee.view.SimpleDraweeView
      android:id="@+id/my_image_view"
      android:layout_width="20dp"
      android:layout_height="20dp"
      fresco:fadeDuration="300"     
      fresco:actualImageScaleType="focusCrop"
      fresco:placeholderImage="@color/wait_color"
      fresco:placeholderImageScaleType="fitCenter"
      fresco:failureImage="@drawable/error"
      fresco:failureImageScaleType="centerInside"
      fresco:retryImage="@drawable/retrying"
      fresco:retryImageScaleType="centerCrop"
      fresco:progressBarImage="@drawable/progress_bar"
      fresco:progressBarImageScaleType="centerInside"
      fresco:progressBarAutoRotateInterval="1000"
      fresco:backgroundImage="@color/blue"
      fresco:overlayImage="@drawable/watermark"
      fresco:pressedStateOverlayImage="@color/red"
      fresco:roundAsCircle="false"
      fresco:roundedCornerRadius="1dp"
      fresco:roundTopLeft="true"
      fresco:roundTopRight="false"
      fresco:roundBottomLeft="false"
      fresco:roundBottomRight="true"
      fresco:roundWithOverlayColor="@color/corner_color"
      fresco:roundingBorderWidth="2dp"
      fresco:roundingBorderColor="@color/border_color"
    />

    fadeDuration        淡入淡出的时间
    actualImageScaleType    图片的填充方式
    placeholderImage    预加载图片
    placeholderImageScaleType   预加载图片填充方式
    failureImage        加载失败图片
    failureImageScaleType   失败图片填充方式
    retryImage      重试图片
    retryImageScaleType 重试图片填充方式
    progressBarImage    加载进度图片
    progressBarImageScaleType   进度图片填充方式
    progressBarAutoRotateInterval 自动旋转间隔
    backgroundImage 背景图片
    overlayImage        覆盖图片
    pressedStateOverlayImage    按下时覆盖图
    roundAsCircle       是否为圆形图
    roundedCornerRadius 圆角弧度
    roundTopLeft        左上角弧度
    roundWithOverlayColor   圆角的覆盖色
    roundingBorderWidth 圆角的边框宽度
    roundingBorderColor 圆角边框颜色

如果用此框架加载静态图片的话,直接使用此框架的空间setImageUri的方法就可以了

五. PhotoView

  • 关于这个框架的使用在这里 https://github.com/chrisbanes/PhotoView

Drawable bitmap = getResources().getDrawable(R.mipmap.ic_launcher);
                imageView.setImageDrawable(bitmap);
                PhotoViewAttacher mAttacher = new PhotoViewAttacher(imageView);

这里需要注意

// If you later call mImageView.setImageDrawable/setImageBitmap/setImageResource/etc then you just need to call
mAttacher.update();

六. Xutils

Build注入:

//  xutils
    compile 'org.xutils:xutils:3.3.38'

在Application 进行注册

public class App extends BaseApplication {
    @Override
    public void onCreate() {
        super.onCreate();

//TODO 注册Xutils
        x.Ext.init(this);

}
}

用法:

//TODO xUTILS
        //xUtils绑定网络图片
        //第一个参数是ImageView对象
        //第二个参数是URL字符串地址
//        x.image().bind(rxdq_big_img, "http://p0.so.qhmsg.com/sdr/600_900_/t01d43698fbeca29695.jpg");

请左上角 关注下 或右上角点个赞吧 ?

Android 6种加载网络图片的第三方详解相关推荐

  1. Android Fragment懒加载机制分析与详解

    一.介绍 Fragment是Android3.0以后引进,称为碎片.它与Activity非常相似,用一个Activity中描述一些行为或者一部分用户界面,使用多个Fragment可以在一个单独的Act ...

  2. Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide五大Android开源组件加载网络图片的优缺点比较

    在android中的加载网络图片是一件十分令人头疼的事情,在网上有着许多关于加载网络图片的开源库,可以让我们十分方便的加载网络图片.在这里我主要介绍一下我自己在使用Volley, Picasso, U ...

  3. android fragment加载布局的方式,Android中Fragment的加载方式与数据通信详解

    Android中Fragment的加载方式与数据通信详解 发布时间:2020-08-22 18:55:57 来源:脚本之家 阅读:155 作者:Joah 一.加载方式 1. 静态加载 1.1 加载步骤 ...

  4. 【胖虎的逆向之路】01——动态加载和类加载机制详解

    胖虎的逆向之路 01--动态加载和类加载机制详解 一.前言 二.类的加载器 1. 双亲委派模式 2. Android 中的类加载机制 1)Android 基本类的预加载 2)Android类加载器层级 ...

  5. Fragment的懒加载与生命周期详解

    提示:本文仅为笔者学习记录 Fragment的懒加载与生命周期详解 什么是懒加载 了解Fragment的生命周期 onAttach onCreate onCreateView onActivityCr ...

  6. android listview动态加载网络图片不显示,Android Listview异步动态加载网络图片

    Android Listview异步动态加载网络图片 详见: http://blog.sina.com.cn/s/blog_62186b460100zsvb.html 标签: Android SDK ...

  7. Android 使用Picasso加载网络图片等比例缩放

    在做android图片加载的时候,由于手机屏幕受限,很多大图加载过来的时候,我们要求等比例缩放,比如按照固定的宽度,等比例缩放高度,使得图片的尺寸比例得到相应的缩放,但图片没有变形.显然按照andro ...

  8. Android图片加载Glide框架使用详解

    在Android开发中,图片加载已经是必不可少的一部分,无论是新闻类App,购物类.社交类等等,已经不可能不涉及到图片加载.现在的图片加载框架也是很多,我们最熟悉的应该是UIL了,今天就来记录一下Gl ...

  9. android系统加载主题的流程,详解Android布局加载流程源码

    一.首先看布局层次 看这么几张图 我们会发现DecorView里面包裹的内容可能会随着不同的情况而变化,但是在Decor之前的层次关系都是固定的.即Activity包裹PhoneWindow,Phon ...

最新文章

  1. 深度讲解:web前端性能优化
  2. 商汤被曝已获准在香港上市,计划筹资逾10亿美元
  3. 移动通信网络频段大全,含5G、4G,各种公开频段汇总
  4. C++ 继承Employee类
  5. python get 下载 目录_python实现支持目录FTP上传下载文件的方法
  6. Python爬虫框架Scrapy安装使用步骤
  7. git 本地推送本地仓库到远程
  8. 移动web时代已开启:腾讯X5内核浏览服务
  9. 对路径XXX的访问被拒绝(文件操作权限)的解决方法
  10. Linux中设置Git显示颜色
  11. 2021-07-20 诺瓦星云笔试复盘
  12. Unity2021如何设置中文模式
  13. 快速在网站跳转支付宝付款链接
  14. java集合类-list
  15. Python爬虫学习笔记(实例:淘宝商品信息定向爬虫)
  16. 计算机室内设计绘图论文,室内装饰设计论文参考文献范例借鉴
  17. sass + compass
  18. Python.openpyxl操作Excel
  19. Pandas数据可视化的备忘录
  20. 泡泡机器人原创专栏-Cartographer】Cartographer理论及实现浅析

热门文章

  1. 解读一个有趣的网站seo,论网站如何快速上词以及上量
  2. 数部视频学习资源,一定有你想要的
  3. 简述python在量化金融中应用_Python金融量化
  4. 什么是生成器?如何创建生成器
  5. 5分绩点转4分_5分绩点转4分_gpa5分制换算4分制(5分绩点转4分)
  6. [php fqm说明]以及nginx和apache的一些说明
  7. 用plt.scatter画散点图
  8. 全球与中国镁-铈(Mg-Ce)母合金市场深度研究分析报告
  9. C语言简易版画图工具Vc2022
  10. 44session绑定解绑、钝化活化