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. Uri uri = Uri.parse("http://img4.imgtn.bdimg.com");//错误的地址
  3. //找出控件
  4. simple = (SimpleDraweeView) findViewById(R.id.simpledraweeview);
  1. simple.setImageURI(uri);//开始下载
  2. //重试,创建DraweeController对象
  3. DraweeController controller = Fresco.newDraweeControllerBuilder()
  4. .setUri(url)//URL地址
  5. .setTapToRetryEnabled(true)//开启点击重试
  6. .build();//构建
  7. 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. simple.setController(controller);<pre name="code" class="java">Uri uri=Uri.parse("asset:///aa.gif");
  6. DraweeController controller=Fresco.newDraweeControllerBuilder()
  7. .setUri(uri)
  8. .setAutoPlayAnimations(true)
  9. .build();
  10. 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. 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. simple.setController(controller);

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

XML文件:

  1. <com.facebook.drawee.view.SimpleDraweeView
  2. android:id="@+id/my_image_view"
  3. android:layout_width="20dp"
  4. android:layout_height="20dp"
  5. fresco:fadeDuration="300"//图片淡出的事件(ms)
  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"//进度图自动旋转的间隔时间(ms)
  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. />

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

Fresco框架SimpleDraweeView控件的简单使用的更多相关文章

  1. FoxOne---一个快速高效的BS框架--WEB控件属性编辑器

    FoxOne---一个快速高效的BS框架--(1) FoxOne---一个快速高效的BS框架--(2) FoxOne---一个快速高效的BS框架--(3) FoxOne---一个快速高效的BS框架-- ...

  2. WebBrowser控件的简单应用2

    原文:WebBrowser控件的简单应用2 第一个简单应用里面讲述的是如何模拟调用当前网页的元素的事件或者赋值/取值.这次的应用讲述的是1:如何处理弹出新页面的事件(总是在我的浏览器里面现实新页面)2 ...

  3. vs2005中的WebBrowser控件的简单应用

    原文:vs2005中的WebBrowser控件的简单应用 这个控件被封装了一下,和以前的调用方式稍有不同.事件还是那几个,变化不大.方法变了不少.从网上能查到的资料不多,贴出一些代码来作参考.看看这段 ...

  4. wxPython中按钮、文本控件的简单运用

    本节学习图形用户界面 ------------------------ 本节介绍如何创建python程序的图形用户界面(GUI),也就是那些带有按钮和文本框的窗口.这里介绍wxPython : 下载地 ...

  5. 基于Winform框架DataGridView控件的SqlServer数据库查询展示功能的实现

    关键词:Winform.DataGridView.SqlServer 一个基于winform框架的C/S软件,主要实现对SqlServer数据库数据表的实时查询. 一.为DataGridView添加数 ...

  6. 安卓Design包之TabLayout控件的简单使用

    Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的Android Design Support Library,在这个supp ...

  7. IOS自定义日历控件的简单实现(附思想及过程)

    因为程序要求要插入一个日历控件,该空间的要求是从当天开始及以后的六个月内的日历,上网查资料基本上都说只要获取两个条件(当月第一天周几和本月一共有多少天)就可以实现一个简单的日历,剩下的靠自己的简单逻辑 ...

  8. iOS:UIMapView地图视图控件的简单使用

    可以通过设置MKMapView的mapViewType设置地图类型 MKMapTypeStandard 普通地图 MKMapTypeSatellite 卫星云图  MKMapTypeHybrid 普通 ...

  9. Android PullToRefresh下拉刷新控件的简单使用

    PullToRefresh这个开源库早就听说了,不过一直没用过.作为一个经典的的开源库,我觉得还是有必要认识一下. 打开github上的网址:https://github.com/chrisbanes ...

随机推荐

  1. bash shell命令与监测的那点事(二)

    bash shell命令与监测的那点事之top 上次我们说到了ps命令,ps命令虽然在收集运行在系统上的进程信息很有用,但是也有不足之处,ps命令只能显示某个特定时间点的信息,如果你想观察频繁换进换出 ...

  2. IOS开发---菜鸟学习之路--(二十四)-iOS7View被导航栏遮挡问题的解决

    (此文为复制帖,原文地址为:http://blog.sina.com.cn/s/blog_a8192bdd0101af40.html) self.navigationController.naviga ...

  3. Halcon18 Linux 下载

    Halcon18 Linux下载地址:http://www.211xun.com/download_page_14.html HALCON 18 是一套机器视觉图像处理库,由一千多个算子以及底层的数据 ...

  4. [oldboy-django][2深入django]mysql查询语句--原生sql

    # 增(一共有三种方式) # 插入单条记录 insert into t1(name,...) values('lzp',..); 注意一点:t1(name,...)必须包含所有非空列(除去自增列) # ...

  5. 习题:玛丽卡(SPFA)

    玛丽卡(wikioi1021) [题目描述 ]麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复.因为她和他们不住在同一个城市,因此她开始准备她的长途旅行.在这个国家中每两个城市之间最多只有一条路相通, ...

  6. 【bzoj1367】[Baltic2004]sequence 可并堆

    题目描述 输入 输出 一个整数R 样例输入 7 9 4 8 20 14 15 18 样例输出 13 题解 可并堆,黄源河<左偏树的特点及其应用>Page 13例题原题 #include & ...

  7. [luogu_P1251][LOJ#6008]「网络流 24 题」餐巾计划

    [luogu_P1251][LOJ#6008]「网络流 24 题」餐巾计划 试题描述 一个餐厅在相继的 \(N\) 天里,第 \(i\) 天需要 \(R_i\) 块餐巾 \((i=l,2,-,N)\) ...

  8. 洛谷P3832 [NOI2017]蚯蚓排队 【链表 + 字符串hash】

    题目链接 洛谷P3832 题解 字符串哈希然后丢到hash表里边查询即可 因为\(k \le 50\),1.2操作就暴力维护一下 经复杂度分析会发现直接这样暴力维护是对的 一开始自然溢出WA了,还以为 ...

  9. Python之时间:calender模块(日历)

    import calendar 1.星期 (1)calendar.day_name 星期的全称 print calendar.day_name for i in calendar.day_name: ...

  10. python 对比两个字典的差异

    实际遇到的问题逻辑很繁杂,就不全写了.最后是通过对比两个字典差异来解决的.找出两个字典的差异,可参考以下代码. dict1 = {'a':1,'b':2,'c':3,'d':4} dict2 = {' ...