图片框架:Fresco 的基本使用
来源:互联网 发布:手机简繁体转换软件 编辑:程序博客网 时间:2024/05/23 12:05
fresco是facebook推出的一款强大的android图片处理库,中文文档:http://www.fresco-cn.org/
网上有很多关于fresco的博客,中文文档也写的很详细了,在这里我只是介绍项目中我们可能多的用的功能。
引入fresco:
Android Studio 或者 Gradle
dependencies{
compile 'com.facebook.fresco:fresco:0.9.0+'}
Eclipes ADT:
下载这个文件:https://github.com/facebook/fresco/releases/download/v0.9.0/frescolib-v0.9.0.zip
解压后,你会看到一个目录:frescolib,注意这个目录
1、从菜单文件(file)选择导入(import)
2、展开Android,选择Existing android Code into Workspace 下一步
3、浏览,选中刚才加压的文件中的frescolib目录。
4、这5个项目应该都会被添加到工程:drawee,fbcore,fresco,,imagepipeline,imagepipeline-okhtttp.请确认钱4个目录一定是被选中的,点击完成
5、右键、项目,选择属性,然后选择Android。
6、点击右下角的Add按钮,选择fresco,点击OK,再点击OK
现在,fresco就导入你的项目中了,你可以开始编译了。如果编译不通过,可以尝试清理资源,或者重启Eclipse
1、fresco简单的加载网络图片:
如果你想下载显示一张图片,并且在加载过程中用占位图来显示它,就可以用SimpleDraweeView
在布局中添加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"
/>
代码中添加:
Uri uri = Uri.parse(图片地址);
SimpleDraweeView draweeView = (SimpleDraweeView) findViewById(R.id.my_image_view);
draweeView.setImageURI(uri);
剩下的,Fresco会替你完成:
显示占位图直到加载完成;
下载图片;
缓存图片;
图片不再显示时,从内存中移除;
等等等等。
Fresco 支持许多URI格式
类型 Scheme
远程图片 http://, https://
本地文件 file://
Content provider content://
asset目录下的资源 asset://
res目录下的资源 res://
没错,你完全可以把它当做ImageView控件来用!
注意!
必须设置layout_width和layout_height
如果没有在XML中声明这两个属性,将无法正确加载图像。
wrap_content
SimpleDraweeView 不支持 wrap_content 属性。
所下载的图像可能和占位图尺寸不一致,如果设置出错图或者重试图的话,这些图的尺寸也可能和所下载的图尺寸不一致。
如果大小不一致,图像下载完之后,假设如果是wrap_content,View将会重新layout,改变大小和位置。这将会导致界面跳跃。
只有希望显示的固定宽高比时,可以使用wrap_content。
如果希望显示的图片保持一定宽高比例,如果 4:3,则在XML中:
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/my_image_view"
android:layout_width="20dp"
android:layout_height="wrap_content"/>
然后在代码中指定显示比例:
mSimpleDraweeView.setAspectRatio(1.33f);
2、进度条
在我们从网络加载一张图片时,往往可能因为图片的数量太多,或者网络太慢的原因而导致加载时间过长,这时候如果用户或者开发者想观察图片加载的进度,Fresco就提供这一便捷的特效。
构建hierarchy (层次)*
GenericDraweeHierarchy hierarchy=new GenericDraweeHierarchyBuilder(getResources())
.setProgressBarImage(new ProgressBarDrawable()).build();
simpleDraweeView.setHierarchy(hierarchy);
这样,在 Drawee 的底部就会有一个深蓝色的矩形进度条,当然进度条的样式你也可以自定义
setProgressBarImage(new ProgressBarDrawable()):表示设置图片进度条,样式给的是Fresco自带的,如果你嫌不好看也可以自定义。
3、渐进式加载
如果我们在的应用需要加载大量图片,加载时间过长,给用户的体验感不是特别好,这时候Fresco提供一种加载方式:渐进式JPEG加载,意思是在图片开始加载之后,图会从模糊到清晰渐渐呈现。会先加载一个模糊的图片呈现给用户,让用户知道这张图就快要加载好了,体验感非常不错。
ImageRequest request= ImageRequestBuilder.newBuilderWithSource(Uri)
.setProgressiveRenderingEnabled(true).build();
PipelineDraweeController controller= (PipelineDraweeController) Fresco.newDraweeControllerBuilder().setImageRequest(request).
setOldController(simpleDraweeView.getController()).build();
simpleDraweeView.setControll (controller);
newBuilderWithSource(Uri):里面放置你的图片地址
setProgressiveRenderingEnabled(true):设置是否渐进式加载,默认是false
Fresco.newDraweeControllerBuilder():设置一个新的控制器
setImageRequest(request):设置新的Request
setOldController(simpleDraweeView.getController()):设置要替换的旧控制器
simpleDraweeView.setControll (controller):设置新的控制器
4、占位图
这个没什么好说的,直接上方法
图片没加载时的占位图
XML 中属性值: placeholderImage
设置加载失败占位图
XML 中属性值: failureImage
点击重新加载图,当图片加载失败时会显示这个图提示用户点击重新加载
在ControllerBuilder中设置 .setTapToRetryEnabled(true)
XML 中属性值: retryImage
这里要注意重新加载这个功能,如果图片加载失败它会显示你设置retryImage属性的图片,意思是让你点击重新加载,.setTapToRetryEnabled(true)需要在ControllerBuilder中设置这个方法,默认是false,如果你重新加载了4次还是失败,那么它才会显示加载失败的占位图,也就是placeholderImage这个属性设置的图片。
除了这些特效意外Fresco还有很多其他的特效,如缩放,旋转,GIF,监听下载事件,自定义View
详细参考中文文档:http://www.fresco-cn.org/
- 图片框架:Fresco 的基本使用
- Fresco 框架的基本使用
- Fresco图片框架的使用
- Fresco的基本使用和各种属性的含义,Fresco加载图片框架
- 图片加载神器fresco----fresco的基本使用
- android图片请求框架Fresco的使用
- Fresco 图片加载框架的简单使用
- 图片加载框架Fresco的使用
- Fresco图片加载框架的使用
- Android之图片加载框架Fresco基本使用(一)
- Fresco图片加载框架使用
- 使用Fresco框架加载图片
- Fresco的基本使用
- Fresco的基本使用
- Fresco的基本使用
- 框架Fresco的使用
- Fresco-Facebook的图片加载框架的使用
- 强大的图片加载框架Fresco的使用
- 如何让MySQL 数据库支持中文
- python 数据初学者 小记
- 面试题总结-Linux常用命令
- 【离散数学】搜集、并搜集、交搜集、求A = {{Φ, 2}, {2}}的并搜集和交搜集
- handler必须在主线程中实例化吗?
- 图片框架:Fresco 的基本使用
- vb.net ファイル圧縮・解凍など
- E - 4 Values whose Sum is 0
- 【codeup 1934】找x
- 15.行属性标签在包裹文字使用时,不需要设置宽高
- iOS 瀑布流基本实现
- XML pull解析
- ARC所有权修饰符---__strong修饰符
- OpenCV使用FileStorage保存Mat数据