Fresco框架SimpleDraweeView控件的简单使用

[java] view plain copy
  1. 首先把网络、SD卡的读写权限添加上:<span style="font-family: Arial, Helvetica, sans-serif;">   </span>  
[java] view plain copy
  1. <span style="font-family: Arial, Helvetica, sans-serif;"><span style="white-space:pre">     </span></span><pre name="code" class="html"><span style="white-space:pre">  </span><uses-permission android:name="android.permission.INTERNET">  
  2.     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE">  
  3.         <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">  

 

[java] view plain copy
  1. </pre><pre name="code" class="java">添加依赖,好像版本太高不支持GIF类型的动态图????  
[java] view plain copy
  1. <span style="font-family: Arial, Helvetica, sans-serif;"><span style="white-space:pre">         </span>compile 'com.facebook.fresco:fresco:0.9.0'</span>  

 

[java] view plain copy
  1. private SimpleDraweeView simple;//控件  


[java] view plain copy
  1. @Override  
  2.   protected void onCreate(Bundle savedInstanceState) {  
  3.       //Fresco库的初始化,要先初始化库,才能完成布局文件的加载  
  4.       Fresco.initialize(this);//初始化框架  
  5.       super.onCreate(savedInstanceState);  
  6.       setContentView(R.layout.activity_main);  


        1、加载网络图片,在SimpleDraweeView控件显示

[java] view plain copy
  1. String url = "http://img4.imgtn.bdimg.com/it/u=1738110171,2299636339&fm=21&gp=0.jpg";//正确网址  
  2.   
  3. Uri uri = Uri.parse("http://img4.imgtn.bdimg.com");//错误的地址  
  4. //找出控件  
  5. simple = (SimpleDraweeView) findViewById(R.id.simpledraweeview);  
[java] view plain copy
  1. simple.setImageURI(uri);//开始下载  
  2.   
  3. //重试,创建DraweeController对象  
  4. DraweeController controller = Fresco.newDraweeControllerBuilder()  
  5.         .setUri(url)//URL地址  
  6.         .setTapToRetryEnabled(true)//开启点击重试  
  7.         .build();//构建  
  8.   
  9. simple.setController(controller);  


SD卡的根目录:

[java] view plain copy
  1. private String str = Environment.getExternalStorageDirectory().getAbsolutePath();  
[java] view plain copy
  1. </pre><pre name="code" class="java">  

2、加载SD卡上面的图片,注意格式:

[java] view plain copy
  1. <span style="white-space:pre">        </span>file:///。。。。。,字符串形式  
[java] view plain copy
  1. String uri= "file:///storage/emulated/0/DCIM/Camera/IMG_20160227_133717_904.jpg";  
[java] view plain copy
  1. <span style="white-space:pre">    </span>DraweeController controller = Fresco.newDraweeControllerBuilder()  
  2.                .setUri(uri)  
  3.                .setTapToRetryEnabled(true)  
  4.                .build();  
  5.   
  6.        simple.setController(controller);<pre name="code" class="java">Uri uri=Uri.parse("asset:///aa.gif");   
  7.   
  8. DraweeController controller=Fresco.newDraweeControllerBuilder()  
  9.                .setUri(uri)  
  10.                .setAutoPlayAnimations(true)  
  11.                .build();  
  12.   
  13.        simple.setController(controller);  


3、加载res目录下的资源文件(图片)

注意格式:

[java] view plain copy
  1. Uri uri = Uri.parse("res:///" + R.mipmap.bb113);  
  2.        DraweeController controller = Fresco.newDraweeControllerBuilder()  
  3.                .setUri(uri)  
  4.                .setTapToRetryEnabled(true)  
  5.                .build();  
  6.   
  7.        simple.setController(controller);  



4、加载assets文件夹下的动态图片(gif格式),也可以改为网络地址

注意格式:asset:///


 

[java] view plain copy
  1. </pre><p></p><p><span style="font-family:宋体; color:#808080"><span style="font-size:18px"><em></em></span></span></p><pre name="code" class="java"><span style="white-space:pre">  </span>Uri uri=Uri.parse("asset:///aa.gif");  


[java] view plain copy
  1. DraweeController controller=Fresco.newDraweeControllerBuilder()  
  2.         .setUri(uri)  
  3.         .setAutoPlayAnimations(true)  
  4.         .build();  
  5.   
  6. simple.setController(controller);  



 

[java] view plain copy
  1. rap_content  
  2. Drawees 不支持 wrap_content 属性。  
  3.   
  4. 所下载的图像可能和占位图尺寸不一致,如果设置出错图或者重试图的话,这些图的尺寸也可能和所下载的图尺寸不一致。  
  5.   
  6. 如果大小不一致,假设使用的是 wrap_content,图像下载完之后,View将会重新layout,改变大小和位置。这将会导致界面跳跃。  
  7.   
  8. 固定宽高比  
  9. 只有希望显示固定的宽高比时,可以使用wrap_content。  
  10.   
  11. 如果希望图片以特定的宽高比例显示,例如 4:3,可以在XML中指定:  
  12.   
  13. <com.facebook.drawee.view.SimpleDraweeView  
  14.     android:id="@+id/my_image_view"  
  15.     android:layout_width="20dp"  
  16.     android:layout_height="wrap_content"  
  17.     fresco:viewAspectRatio="1.33"  
  18.     <!-- other attributes -->  
  19. 也可以在代码中指定显示比例:  
  20.   
  21. mSimpleDraweeView.setAspectRatio(1.33f);  




XML文件:

[java] view plain copy
  1. <com.facebook.drawee.view.SimpleDraweeView  
  2.   
  3.     android:id="@+id/my_image_view"  
  4.     android:layout_width="20dp"  
  5.     android:layout_height="20dp"  
  6.   
  7.     fresco:fadeDuration="300"//图片淡出的事件(ms)  
  8.   
  9.     fresco:actualImageScaleType="focusCrop"  
  10.   
  11.     fresco:placeholderImage="@color/wait_color"//占位图  
  12.   
  13.     fresco:placeholderImageScaleType="fitCenter"//占位图的缩放类型  
  14.   
  15.     fresco:failureImage="@drawable/error"//失败图片  
  16.   
  17.     fresco:failureImageScaleType="centerInside"//失败图片的类型  
  18.   
  19.     fresco:retryImage="@drawable/retrying"//重试图片  
  20.   
  21.     fresco:retryImageScaleType="centerCrop"//图的重试缩放类型  
  22.   
  23.     fresco:progressBarImage="@drawable/progress_bar"//进度图片  
  24.   
  25.     fresco:progressBarImageScaleType="centerInside"//进度图的缩放类型  
  26.   
  27.     fresco:progressBarAutoRotateInterval="1000"//进度图自动旋转的间隔时间(ms)  
  28.   
  29.     fresco:backgroundImage="@color/blue"//背景图片  
  30.   
  31.     fresco:overlayImage="@drawable/watermark"//叠加图片  
  32.   
  33.     fresco:pressedStateOverlayImage="@color/red"//按压状态下显示的叠加图  
  34.   
  35.     fresco:roundAsCircle="false"//是否设置为圆形图片  
  36.   
  37.     fresco:roundedCornerRadius="1dp"//圆角半径  
  38.   
  39.     fresco:roundTopLeft="true"//左上角是否为圆角  
  40.   
  41.     fresco:roundTopRight="false"//右上角是否为圆角  
  42.   
  43.     fresco:roundBottomLeft="false"//左下角是否为圆角  
  44.   
  45.     fresco:roundBottomRight="true"//右下角是否为圆角  
  46.   
  47.     fresco:roundWithOverlayColor="@color/corner_color"//圆形或者圆角图片底下的叠加颜色  
  48.   
  49.     fresco:roundingBorderWidth="2dp"//圆形或者圆角图片边框的宽度  
  50.   
  51.     fresco:roundingBorderColor="@color/border_color"//圆形或者圆角边框的颜色  
  52.   />  



[java] view plain copy
    1. 缩放类型—ScaleType:  
    2.   
    3. 类型  描述  
    4. center  居中,无缩放  
    5.   
    6. centerCrop  保持宽高比缩小或放大,使得两边都大于或等于显示边界。居中显示。  
    7.   
    8. focusCrop   同centerCrop, 但居中点不是中点,而是指定的某个点  
    9.   
    10. centerInside    使两边都在显示边界内,居中显示。如果图尺寸大于显示边界,则保持长宽比缩小图片。  
    11.   
    12. fitCenter   保持宽高比,缩小或者放大,使得图片完全显示在显示边界内。居中显示  
    13.   
    14. fitStart    同上。但不居中,和显示边界左上对齐  
    15.   
    16. fitEnd  同fitCenter, 但不居中,和显示边界右下对齐  
    17.   
    18. fitXY   不保存宽高比,填充满显示边界  
    19.   
    20. none    如要使用tile mode显示, 需要设置为none  
    21.   
    22. 推荐使用:focusCrop 类型 



    本文转自 一点点征服   博客园博客,原文链接:http://www.cnblogs.com/ldq2016/p/6645185.html,如需转载请自行联系原作者
上一篇:objectAnimation与ValueAnimation的使用


下一篇:Android 小项目之--数据存储【Files】(附源码)