• Fresco框架SimpleDraweeView控件的简单使用


    1. 首先把网络、SD卡的读写权限添加上:<span style="font-family: Arial, Helvetica, sans-serif;">   </span>  
    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">  
    1. </pre><pre name="code" class="java">添加依赖,好像版本太高不支持GIF类型的动态图????  
    1. <span style="font-family: Arial, Helvetica, sans-serif;"><span style="white-space:pre">         </span>compile 'com.facebook.fresco:fresco:0.9.0'</span>  
    1. private SimpleDraweeView simple;//控件  


    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控件显示

    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);  
    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卡的根目录:

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

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

    1. <span style="white-space:pre">        </span>file:///。。。。。,字符串形式  
    1. String uri= "file:///storage/emulated/0/DCIM/Camera/IMG_20160227_133717_904.jpg";  
    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目录下的资源文件(图片)

    注意格式:

    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:///


    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");  


    1. DraweeController controller=Fresco.newDraweeControllerBuilder()  
    2.         .setUri(uri)  
    3.         .setAutoPlayAnimations(true)  
    4.         .build();  
    5.   
    6. simple.setController(controller);  



    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文件:

    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.   />  



      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 类型 
  • 相关阅读:
    Windows Server 2003 SP2(32位) 中文版 下载地址 光盘整合方法
    用Recycle()方法对Java对象的重要性
    Lotus中千奇百怪的 $$
    Developing a simple application using steps "User Decision" and "Mail"(1) 沧海
    沟通中的情绪管理(演讲稿) 沧海
    人只有在压力之下,才可能成功,没做一件事,都必须成功,不许言败 沧海
    什么是IDOC,以及IDOC的步骤 沧海
    VS2008 Professional Edition CHS中的deffactory.dat读取错误 沧海
    Including custom text in the step "User Decision" 沧海
    SAP Upgrade Strategy 沧海
  • 原文地址:https://www.cnblogs.com/ldq2016/p/6645185.html
Copyright © 2020-2023  润新知