一、Fresco的使用简单介绍
2015-04-08 14:10
232 查看
前言:第一次翻译,若有失误,请轻拍.......
Fresco 是facebook开源的Android图形加载库,github地址在 https://github.com/facebook/fresco
原文在http://frescolib.org/docs
如果仅仅需要下载并显示图片,下载之前,显示一个默认图片,用SimpleDraweeView即可;
显示网络图片,当然需要网络的权限,在AndroidManifest.xml里添加如下权限:
在app启动代码处,且在调用setContentView()之前,初始化Fresco类:
在布局的xml中,需要在根节点添加Fresco的命名空间:
然后把SimpleDraweeView添加到该布局中:
该view的其他xml属性,参见Fresco drawees
xml属性一览表
显示图片,在java代码中,只需要以下几行代码即可:
下载并替换默认图片的工作就交给Fresco了,大概的流程是:显示默认图片-下载图片-缓存-显示-移除;当View不再显示在屏幕中时,图片会从内存中清除。
Drawees
Drawee是图片的渲染控件,有三部分组成,类似MVC框架.
DraweeView
继承自Android的View类.
我们应当在app的XML或java代码使用SimpleDraweeView类,调用其setImageURI方法,加载图片的URL。
DraweeView的其他xml属性介绍,后面再补充。
DraweeHierarchy
DraweeHierarchy是实质上渲染图片内容的类,可以把它当作MVC中的Model,并且我们可以通过它在java代码里设置图片的属性。
DraweeController
DraweeController类负责框架底层的图片加载,如果我们不仅仅是需要一个简单的URI来指定要显示的图片,那么我们就会用到这个类。
DraweeControllerBuilder
DraweeController一旦创建便不可更改,他们通过建造者模式创建。
Listener
只要用了builder指定了一个Listener,那么可以利用数据从服务器传输到客户端的传输比率。
The Image Pipeline
Fresco通过Image Pipeline(图形管道)完成图片的获取,不管是通过网络、本地文件、content provider 还是本地资源,它都把图片压缩并缓存到本地,并且把内存作为第二缓存存储着解压后的图片。
图形管道使用pinned purgeable技术将图片存储到java堆中,当管道的任务完成时,需要调用者
SimpleDraweeView自动为我们做了这些,因此,这个View应该是我们的首选,只有很少的app需要直接的使用图形管道。
Fresco不支持相对路径,所有的URI必须包含scheme
如下的URI scheme是可以用的:
注意:只有图片资源可以被图形管道处理,其他的资源如字符串或xmlDrawable是不被支持的。定义在xml中的Drawable并不是一张图片,如果我们要显示xml drawable,那么应当设置其为placeholder,并且设置uri为null。
Fresco 是facebook开源的Android图形加载库,github地址在 https://github.com/facebook/fresco
原文在http://frescolib.org/docs
Fresco入门
如果仅仅需要下载并显示图片,下载之前,显示一个默认图片,用SimpleDraweeView即可;显示网络图片,当然需要网络的权限,在AndroidManifest.xml里添加如下权限:
<uses-permission android:name="android.permission.INTERNET"/>
在app启动代码处,且在调用setContentView()之前,初始化Fresco类:
Fresco.initialize(context);
在布局的xml中,需要在根节点添加Fresco的命名空间:
<!-- Any valid element will do here --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:fresco="http://schemas.android.com/apk/res-auto" android:layout_height="match_parent" android:layout_width="match_parent">
然后把SimpleDraweeView添加到该布局中:
<com.facebook.drawee.view.SimpleDraweeView android:id="@+id/my_image_view" android:layout_width="130dp" android:layout_height="130dp" fresco:placeholderImage="@drawable/my_drawable" />
该view的其他xml属性,参见Fresco drawees
xml属性一览表
显示图片,在java代码中,只需要以下几行代码即可:
Uri uri = Uri.parse("http://frescolib.org/static/fresco-logo.png"); SimpleDraweeView draweeView = (SimpleDraweeView) findViewById(R.id.my_image_view); draweeView.setImageURI(uri);
下载并替换默认图片的工作就交给Fresco了,大概的流程是:显示默认图片-下载图片-缓存-显示-移除;当View不再显示在屏幕中时,图片会从内存中清除。
概念
DraweesDrawee是图片的渲染控件,有三部分组成,类似MVC框架.
DraweeView
继承自Android的View类.
我们应当在app的XML或java代码使用SimpleDraweeView类,调用其setImageURI方法,加载图片的URL。
DraweeView的其他xml属性介绍,后面再补充。
DraweeHierarchy
DraweeHierarchy是实质上渲染图片内容的类,可以把它当作MVC中的Model,并且我们可以通过它在java代码里设置图片的属性。
DraweeController
DraweeController类负责框架底层的图片加载,如果我们不仅仅是需要一个简单的URI来指定要显示的图片,那么我们就会用到这个类。
DraweeControllerBuilder
DraweeController一旦创建便不可更改,他们通过建造者模式创建。
Listener
只要用了builder指定了一个Listener,那么可以利用数据从服务器传输到客户端的传输比率。
The Image Pipeline
Fresco通过Image Pipeline(图形管道)完成图片的获取,不管是通过网络、本地文件、content provider 还是本地资源,它都把图片压缩并缓存到本地,并且把内存作为第二缓存存储着解压后的图片。
图形管道使用pinned purgeable技术将图片存储到java堆中,当管道的任务完成时,需要调用者
close图片。
SimpleDraweeView自动为我们做了这些,因此,这个View应该是我们的首选,只有很少的app需要直接的使用图形管道。
支持的URI类型
Fresco不支持相对路径,所有的URI必须包含scheme如下的URI scheme是可以用的:
Type | Scheme | Fetch method used |
---|---|---|
File on network | http://, https:// | HttpURLConnectionor network layer |
File on device | file:// | FileInputStream |
Content provider | content:// | ContentResolver |
Asset in app | asset:// | AssetManager |
Resource in app | res:// | Resources.openRawResource |
相关文章推荐
- Fresco的简单介绍及简单使用
- linux file.src.rpm 使用方法的简单介绍
- 关于使用TreeView 控件的简单介绍
- 使用技巧:简单介绍JSP数据库高级操作
- Lucene的使用以及简单介绍
- Asp.net 2.0中Themes的使用简单介绍
- 通过一个简单的例子,介绍如何使用LDAP(转)
- Linux curl使用简单介绍
- Linux curl使用简单介绍
- Eclipse中使用MSN插件的简单介绍
- JavaBean的简单介绍与使用
- MFC控件 状态条的简单介绍及使用 CStatusBar
- 简单介绍vss工具command操作使用
- AJAX学习基础:简单介绍数据岛使用方法
- PDF iText 使用简单介绍
- Oracle游标使用的简单介绍
- [转]Java的开源项目:简单介绍Log4J的使用
- 简单介绍数据岛使用方法
- 【ABAP】LSMW使用IDoc方法的简单介绍
- Gravatar 全球通用头像简单介绍与使用教程