资源描述:
《android培训教程-常见的图片加载框架》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、http://www.moliying.com 图片加载涉及到图片的缓存、图片的处理、图片的显示等。而随着市面上手机设备的硬件水平飞速发展,对图片的显示要求越来越高,稍微处理不好就会造成内存溢出等问题。很多软件厂家的通用做法就是借用第三方的框架进行图片加载。开源框架的源码还是挺复杂的,但使用较为简单。大部分框架其实都差不多,配置稍微麻烦点,但是使用时一般只需要一行,显示方法一般会提供多个重载方法,支持不同需要。这样会减少很不必要的麻烦。同时,第三方框架的使用较为方便,这大大的减少了工作量、提高了开发效率。
2、本文主要介绍四种常用的图片加载框架,分别是Fresco、ImageLoader、Picasso、Glide,包括他们各自的优缺点、使用步骤等等。 首先看Fresco,Fresco是Facebook推出的开源图片缓存工具,主要特点包括:两个内存缓存加上Native缓存构成了三级缓存,支持流式,可以类似网页上模糊渐进式显示图片,对多帧动画图片支持更好,如Gif、WebP。它的优点是其他几个框架没有的,或者说是其他几个框架的短板。 优点: 1.图片存储在安卓系统的匿名共享内存,而不是虚拟机的堆内存中,图片
3、的中间缓冲数据也存放在本地堆内存,所以,应用程序有更多的内存使用,不会因为图片加载而导致oom,同时也减少垃圾回收器频繁调用回收Bitmap导致的界面卡顿,性能更高。 2.渐进式加载JPEG图片,支持图片从模糊到清晰加载。 3.图片可以以任意的中心点显示在ImageView,而不仅仅是图片的中心。 4.JPEG图片改变大小也是在native进行的,不是在虚拟机的堆内存,同样减少OOM。 5.很好的支持GIF图片的显示。 缺点: 1.框架较大,影响Apk体积 2.使用较繁琐 使用步骤:
4、 1.引入Fresco,包括两种方式,在线和离线。 在线引入依赖脚本形式,在dependencies中添加依赖,compile'com.facebook.fresco:fresco:0.9.0' 引入离线引入,需要导入的arr包较多,包括:compile(name:'drawee-0.9.0',ext:'aar')compile(name:'fbcore-0.9.0',ext:'aar')磨砺营IT教育版权所有http://www.moliying.comcompile(name:'image
5、pipeline-0.9.0',ext:'aar')compile(name:'imagepipeline-base-0.9.0',ext:'aar')compilefiles('libs/bolts-android-1.1.4.jar') 上面提到的aar其实就是libmodule压缩包的形式,包括.class和相关的资源文件,平常使用的jar仅仅包括.class文件。使用aar包时,还需要来到project`build.gradle`里面,在allprojects方法体加入 allproject
6、s{ repositories{ jcenter() //addbegin flatDir{ dirs'libs' } //addend } 2.需要在程序入口方法里面进行初始化。在oncreate方法中添加初始化语句。 Fresco.initialize(context); 3.在布局文件中,需要使用图片展示地方,使用它定义的控件 7、acebook.drawee.view.SimpleDraweeView android:id="@+id/iv_img" android:layout_width="150dp" android:layout_height="150dp" android:src="@mipmap/ic_launcher" fresco:fadeDuration="300" fresco:roundingBorderColor
8、="#ccc" fresco:roundingBorderWidth="2dp"/>磨砺营IT教育版权所有http://www.moliying.com 4.设置静态图片,在代码中具体写如下代码 //图片加载 Uriuri=Uri.parse(data.url); holder.ivIcon.setImageURI(uri); 5.设置gif图片,在代码中具体写如下代码 DraweeController