android 初识Fresco

来源:互联网 发布:mmd格斗动作数据下载 编辑:程序博客网 时间:2024/05/21 09:54

  Fresco是facebook推出的一款强大的图片加载的框架,这个框架出来一段时间了,前一段时间使用过了ImageLoader的框架,生命在于折腾,今天就来折腾一下Fresco这个强大的框架

       1.配置环境

        由于我用的是Android studio所以这里就只是说一下android studio下如何配置,在强大的gradle,只需要一句话搞定,gradle会帮你下载这个Fresco框架,gradle真好,可以自动维护你项目中的框架

[java] view plain copy
  1. compile 'com.facebook.fresco:fresco:0.5.0+'  

      2.开始使用Fresco

        因为我这里加载的是一张网络图片,所以要获得网络权限

[java] view plain copy
  1. <uses-permission android:name="android.permission.INTERNET"/>  

         初始化Fresco,如果项目中多处用到Fresco,就直接在application中初始化,如果我只是写着玩玩,直接放在activity中的setContentView()的前面就ok了

[java] view plain copy
  1. Fresco.initialize(context);  

用人家的框架就要按照人家的要求来是不,所以控件名字,命名空间都要听人家的

[html] view plain copy
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:fresco="http://schemas.android.com/apk/res-auto"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent">  
  5.   
  6.     <com.facebook.drawee.view.SimpleDraweeView  
  7.         android:id="@+id/image_view"  
  8.         android:layout_width="300dp"  
  9.         android:layout_height="300dp"  
  10.         fresco:placeholderImage="@mipmap/ic_launcher"/>  
  11.   
  12. </LinearLayout>  
 
当然你也可以不写它的命名空间,用里面的属性的时候加上去,不用就别给自己找麻烦了,直接干掉

       给控件uri就ok了

[java] view plain copy
  1. Uri uri = Uri.parse("http://pic1.nipic.com/2008-09-08/200898163242920_2.jpg");  
  2.         imageView.setImageURI(uri);  

ok,剩下的图片下载,缓存,图片移除就交给Fresco了,是不是很强大,但这里有一个问题,你的控件的大小必须确定,不能想以前直接使用wrap_content,当然你也可以设置宽高中的一个值,但是要设定宽高比
[java] view plain copy
  1. imageView.setAspectRatio(1.0f);  

       当然上面说到它强大了,强大就不止只是加载网络图片吧,它本身也支持本地,Content Provider,asset,res的图片

       本地:file:// Content provider:content://  asset:  asset://  res: res://,就是让你拼一个uri

当然上面提到的SimpleDraweeView只是Drawee其中的控件,没有什么很特别的需求使用它就够了,下面贴一下它里面的一些属性,方便食用的时候查找

[html] view plain copy
  1. <com.facebook.drawee.view.SimpleDraweeView  
  2.     android:id="@+id/image_view"  
  3.     android:layout_width="300dp"  
  4.     android:layout_height="300dp"  
  5.     fresco:fadeDuration="300"  
  6.     fresco:actualImageScaleType="focusCrop"  
  7.     fresco:placeholderImage="@color/wait_color"  
  8.     fresco:placeholderImageScaleType="fitCenter"  
  9.     fresco:failureImage="@drawable/error"  
  10.     fresco:failureImageScaleType="centerInside"  
  11.     fresco:retryImage="@drawable/retrying"  
  12.     fresco:retryImageScaleType="centerCrop"  
  13.     fresco:progressBarImage="@drawable/progress_bar"  
  14.     fresco:progressBarImageScaleType="centerInside"  
  15.     fresco:progressBarAutoRotateInterval="1000"  
  16.     fresco:backgroundImage="@color/blue"  
  17.     fresco:overlayImage="@drawable/watermark"  
  18.     fresco:pressedStateOverlayImage="@color/red"  
  19.     fresco:roundAsCircle="false"  
  20.     fresco:roundedCornerRadius="1dp"  
  21.     fresco:roundTopLeft="true"  
  22.     fresco:roundTopRight="false"  
  23.     fresco:roundBottomLeft="false"  
  24.     fresco:roundBottomRight="true"  
  25.     fresco:roundWithOverlayColor="@color/corner_color"  
  26.     fresco:roundingBorderWidth="2dp"  
  27.     fresco:roundingBorderColor="@color/border_color"  
  28.   />  

简单介绍一下上面的属性:

      placeholderImage就是所谓的展位图啦,在图片没有加载出来之前你看到的就是它

      failureIamge看到名字就知道是什么了,图片加载失败时显示的图片就是它了

      retryImage图片加载失败时显示,提示用户点击重新加载,重复加载4次还是没有加载出来的时候才会显示failureImage的图片

      progressBarImage进度条图片

      backgroundImage背景图片,这里的背景图片首先被绘制

     overlayImage设置叠加图,在xml中只能设置一张叠加图片,如果需要多张图片的话,需要在java代码中设置哦

     pressedStateOverlayImage设置点击状态下的叠加图,此叠加图不能缩放

     ImageScaleType这个就是各种各样的图片缩放样式了,center,centerCrop,fouseCrop,centerInside,fitCenter,fitStart,fitEnd,fitXY

     剩下的就是对圆角的处理了...

0 0