使用 Fresco加载图片

摘要:
xmlversion=“1.0”encoding=“utf-8”?

概念:

ImagePipeline ——负责从网络、本地图片、Content Provider(内容提供者)或者本地资源那里获取图片,压缩保存在本地存储中和在内存中保存为压缩的图片

Drawee——处理图片的渲染,由3部分组成:

(1)DraweeView——显示图片的View,继承ImageView;大部分时间将使用SimpleDraweeView

(2)DraweeHierarchy——Fresco提供了很多定制功能,如:添加placeholderImage,retryImage,failureImage,backgroundImage;当它们需要显示追踪所有的这些图片并在它们

(3)DraweeController——负责处理图片加载器;如果不想使用ImagePipeline,Fresco允许自定义Image loader

开始使用:

1. 添加Fresco到 app/build.gradle 中:

dependencies {
    compile 'com.facebook.fresco:fresco:0.6.1'
}

2.如果需要从网络中获取图片,在AndroidManifest.xml中增加Internet权限:

<uses-permission android:name="android.permission.INTERNET"/>

3.初始化Fresco. 在使用Fresco的activity中,Fresco 必须在setContentView()之前初始化

Fresco.initialize(context);

调用Fresco.initialize一次即可完成初始化,多次调用初始化无意义,所以最好在Application里面做这件事。

public class MyApplication extendsApplication {
    @Override
    public voidonCreate() {
        super.onCreate();
        Fresco.initialize(this);
    }
}

AndroidManifest.xml中指定你的 Application 类

<manifest
    ...
    >
    <uses-permission android:name="android.permission.INTERNET" />
    <application
      ...
      android:label="@string/app_name"
      android:name=".MyApplication"
      >
      ...
    </application>
    ...
  </manifest>

4.在xml布局文件中, 加入命名空间:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns: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"
    android:orientation="vertical">
    <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/my_image_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        fresco:placeholderImage="@drawable/img_frame_background" />
</LinearLayout>

Note:If you want to use any Fresco defined properties, you'll need to add a custom namespace definition:

xmlns:fresco="http://schemas.android.com/apk/res-auto"

5.设置图片URI:

Uri imageUri = Uri.parse("https://i.imgur.com/tGbaZCY.jpg");
SimpleDraweeView draweeView =(SimpleDraweeView) findViewById(R.id.sdvImage);
draweeView.setImageURI(imageUri);

/****************************************************************/

在XML中使用Drawees
Drawees 具有极大的可定制性。
下面的例子给出了可以配置的各种选项:

<com.facebook.drawee.view.SimpleDraweeView
  android:id="@+id/my_image_view"
  android:layout_width="20dp"
  android:layout_height="20dp"
  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"
/>

参照:

[1]Fresco文档:http://fresco-cn.org/docs/using-drawees-xml.html

[2]Displaying Images with the Fresco Library

免责声明:文章转载自《使用 Fresco加载图片》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何快速解决虚拟机中的CentOS7无法上网的方式使用thumbnailator 时部分图片抛异常下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【转】Android各大发布市场

前言  如果只有一个或者少许的两三个Android市场,本文也没用存在的必要性,本文谨献给同在Android奋战的同仁。 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com农民伯伯: http://over140.cnblogs.com  正文  一、应用市场  1、Google Play https://pl...

检测当前运行环境——移动端与PC端。

方法1: $(function checkBrowser(){ var browser={      versions:function(){             var u = navigator.userAgent, app = navigator.appVersion; return { //移动终端浏览器版本信息                ...

Android 实现动态匹配输入的内容 AutoCompleteTextView和MultiAutoCompleteTextView

AutoCompleteTextView1.功能:动态匹配输入的内容,如百度搜索引擎当输入文本时可以根据内容显示匹配的热门信息。2.独特属性:android:completionThreshold 设置输入多少字符时自动匹配 使用AutoCOmpleteTextView实现自动匹配输入的内容private AutoCompleteTextView acTe...

eclipse+maven+ssm框架搭建

eclipse+maven+ssm框架 0、系统环境 1)Windows 10 企业版 2)JDK 1.8.0_131 3)Eclipse Java EE IDE for Web Developers  Version: Neon.3 Release (4.6.3) 4)Tomcat 8.5 1、maven下载及配置 maven的下载地址:http:...

Android基础——广播(静态注册)

安卓版本高了就会有点问题,不能静态注册  令活动Main用来发广播,另一个接收器(不是Activity而是receiver)用来接收广播 注册文件 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/r...

JAVA系列笔记十五之intellj idea

1.intellj idea中maven镜像配置 maven的配置地方如图所示:   maven的配置文件settings.xml存在于两个地方: 安装的地方:${M2_HOME}/conf/settings.xml 用户的目录:${user.home}/.m2/settings.xml 上图所示maven的安装目录为bundle 3,因idea中mav...