Fresco是facebook推出的一款强大的图片加载的框架,这个框架出来一段时间了,前一段时间使用过了ImageLoader的框架,生命在于折腾,今天就来折腾一下Fresco这个强大的框架。 java
因为我用的是android studio因此这里就只是说一下android studio下如何配置,在强大的gradle,只须要一句话搞定,gradle会帮你下载这个Fresco框架,gradle真好,能够自动维护你项目中的框架 android
compile 'com.facebook.fresco:fresco:0.5.0+' 缓存
2.开始使用Fresco由于我这里加载的是一张网络图片,因此要得到网络权限 网络
<uses-permission android:name="android.permission.INTERNET"/> app
初始化Fresco,若是项目中多处用到Fresco,就直接在application中初始化,若是我只是写着玩玩,直接放在activity中的setContentView()的前面就ok了 框架
Fresco.initialize(context); ide
用人家的框架就要按照人家的要求来是不,因此控件名字,命名空间都要听人家的。 gradle
01
02
03
04
05
06
07
08
09
10
|
<LinearLayoutxmlns:android="
http://schemas.android.com/apk/res/android"
xmlns:fresco="
http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/image_view"
android:layout_width="300dp"
android:layout_height="300dp"
fresco:placeholderImage="@mipmap/ic_launcher"/>
</LinearLayout>
|
固然你也能够不写它的命名空间,用里面的属性的时候加上去,不用就别给本身找麻烦了,直接干掉给控件uri就ok了 spa
Uri uri = Uri.parse("http://pic1.nipic.com/2008-09-08/200898163242920_2.jpg"); orm
imageView.setImageURI(uri);
ok,剩下的图片下载,缓存,图片移除就交给Fresco了,是否是很强大,但这里有一个问题,你的控件的大小必须肯定,不能想之前直接使用wrap_content,固然你也能够设置宽高中的一个值,可是要设定宽高比
imageView.setAspectRatio(1.0f);
固然上面说到它强大了,强大就不止只是加载网络图片吧,它自己也支持本地,Content Provider,asset,res的图片
本地:file:// Content provider:content:// asset: asset:// res: res://,就是让你拼一个uri
固然上面提到的SimpleDraweeView只是Drawee其中的控件,没有什么很特别的需求使用它就够了,下面贴一下它里面的一些属性,方便用的时候查找
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/image_view"
android:layout_width="300dp"
android:layout_height="300dp"
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"
/>
|
placeholderImage就是所谓的展位图啦,在图片没有加载出来以前你看到的就是它
failureIamge看到名字就知道是什么了,图片加载失败时显示的图片就是它了
retryImage图片加载失败时显示,提示用户点击从新加载,重复加载4次仍是没有加载出来的时候才会显示failureImage的图片
progressBarImage进度条图片
backgroundImage背景图片,这里的背景图片首先被绘制
overlayImage设置叠加图,在xml中只能设置一张叠加图片,若是须要多张图片的话,须要在java代码中设置哦
pressedStateOverlayImage设置点击状态下的叠加图,此叠加图不能缩放
ImageScaleType这个就是各类各样的图片缩放样式了,center,centerCrop,fouseCrop,centerInside,fitCenter,fitStart,fitEnd,fitXY
剩下的就是对圆角的处理了…