Android使用开源框架Fresco处理图片

Android使用开源框架Fresco处理图片,第1张

概述关于Fresco的优点大家自行谷歌吧,它太强大太优秀了,我这一片小博文容纳不下啊羡慕,今天主要给大家简单介绍下Fresco的使用以及一些属性的介绍。

关于Fresco的优点大家自行谷歌吧,它太强大太优秀了,我这一片小博文容纳不下啊羡慕,今天主要给大家简单介绍下Fresco的使用以及一些属性的介绍。

 Fresco是一个强大的图片加载组件。使用它之后,你不需要再去关心图片的加载和显示这些繁琐的事情!支持AndroID2.3及以后的版本。

官网详细介绍了Fresco一些特性,我第一次看确实是惊呆了。https://www.fresco-cn.org/

2016年Fresco的最新的源码分析:https://github.com/desmond1121/Fresco-Source-Analysis

简述与其他常用图片缓存框架的比较

(1)Volley提供了一个新的控件NetworkImageVIEw来代替传统的ImageVIEw如果你的工程项目,是一个比较小的项目,或者要求不是很高的项目,处理比较简单的可以使用这个库,这个库是Google 2013 I/O发布的一个开源库。使用这个库在图片的处理上,没有提供任何的图片处理的 *** 作,用于细粒度的数据连接还是可以的。

(2)Universal-image-loader是比较早的一个图片缓存组件,也一直受到开发者的推崇,在很多老的应用中使用。

(3)Picasso与GlIDe,无疑GlIDe胜出

(4)而Fresco作为新秀,不管从内存管理(三级缓存),图片的渐进式呈现,gif图和Webp格式图像的加载,都是非常突出。(也是我最喜欢用的)

涉及的常用基本属性介绍

(1)layout_wIDth和layout_height不支持warp_Content但是可以通过setAspectRetio();来设置宽高比

(2)fadeDuration()淡出时间;

(3)actualimageScaleType 设置图片缩放,通常使用foucsCrop,该属性值会通过算法把人头像放在中间

(4)placeholderImage下载成功之前显示的图片placeholderImageScaleType

(5)failureImage加载失败时显示的图片faiturelmagescateType

(6)retrylmage加载失败,提示用户点击重新加载的图片retrylmagescateType

(7)progressbarImage提示用户正在加载,和进度无关progressbarlmagescateType

(8)progressbarautoRotateInterval图片自动旋转的时间间隔

(9)backgroundImage背景

(10)overlayImage叠加图

(11)pressedStateOverlayImage按下时候的叠加图

(12)roundAsCircle是否涉及圆圈

(13)roundedCornerRadius圆角

(14)roundtopleft、roundtopRight…..分别设置4个角不同半径,设置为true以后可以在代码中通过RoundingParams的setConnersRadii()方法设置角度。

(15)rounDWithOverlaycolor边框的叠加颜色

(16)roundingborderWIDth边框宽度

(17)roundingbordercolor边框颜色

下面我们简单演示使用Fresco加载网络图片的流程:
演示效果如下(你们猜对了,又是本人的玉照安静):

第一步:导依赖包

与之前的androID-image-indicator-master项目相同,本次依然使用AndroIDStudio2.2。仍然采用在build.gradle下中dependencIEs下直接添加如下代码:

compile 'com.facebook.fresco:fresco:0.12.0'

同时可以根据个人项目需求添加如下依赖:

dependencIEs {  // 在 API < 14 上的机器支持 WebP 时,需要添加  compile 'com.facebook.fresco:animated-base-support:0.12.0'  // 支持 GIF 动图,需要添加  compile 'com.facebook.fresco:animated-gif:0.12.0'  // 支持 WebP (静态图+动图),需要添加  compile 'com.facebook.fresco:animated-webp:0.12.0'  compile 'com.facebook.fresco:webpsupport:0.12.0'  // 仅支持 WebP 静态图,需要添加  compile 'com.facebook.fresco:webpsupport:0.12.0'}

第二步:添加网络权限

因为是加载网络图片所以必须在 AndroIDManifest.xml配置文件中添加网络权限:

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

第三步:初始化Fresco类

在加载图片之前,你必须初始化Fresco类。你只需要调用Fresco.initialize一次即可完成初始化,下面分别介绍在MainActivity与Application中调用初始化方法

(1)在Application调用初始化(建议使用)

[MyApplication.java]public class MyApplication extends Application {  @OverrIDe  public voID onCreate() {    super.onCreate();    Fresco.initialize(this);  }}

做完上面的工作后,需要在 AndroIDManifest.xml 中指定 Application 类。

(2)在MainActivity中调用初始化

需要注意的是要在setContentVIEw之前初始化

package com.mly.panhouye.frescodemo;import androID.os.Bundle;import androID.support.v7.app.AppCompatActivity;import com.facebook.drawee.backends.pipeline.Fresco;public class MainActivity extends AppCompatActivity {  @OverrIDe  protected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    Fresco.initialize(this);//需要在setContentVIEw之前初始化    setContentVIEw(R.layout.activity_main);  }}

第四步:layout中的xml布局文件

在布局之前需要在xml文件中加入命名空间

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

具体布局文件如下,本次演示通过按钮点击出发图片加载,使用SimpleDraweeVIEw(注意:layout_wIDth/height不支持wrap_content):

<?xml version="1.0" enCoding="utf-8"?><relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"  xmlns:tools="http://schemas.androID.com/tools"  xmlns:fresco="http://schemas.androID.com/apk/res-auto"  androID:ID="@+ID/activity_main"  androID:layout_wIDth="match_parent"  androID:layout_height="match_parent"  tools:context="com.mly.panhouye.frescodemo.MainActivity">  <button    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:layout_below="@+ID/my_image_vIEw"    androID:layout_centerHorizontal="true"    androID:text="加载网络图片"    androID:onClick="loadInternetimage"    androID:layout_margintop="12dp"    androID:ID="@+ID/button" />  <com.facebook.drawee.vIEw.SimpleDraweeVIEw    androID:ID="@+ID/my_image_vIEw"    androID:layout_wIDth="400dp"    androID:layout_height="400dp"    fresco:placeholderImage="@mipmap/ic_launcher"    androID:layout_alignParenttop="true"    androID:layout_centerHorizontal="true" /></relativeLayout>

第五步:java实现代码

package com.mly.panhouye.frescodemo;import androID.net.Uri;import androID.os.Bundle;import androID.support.v7.app.AppCompatActivity;import androID.vIEw.VIEw;import com.facebook.drawee.backends.pipeline.Fresco;import com.facebook.drawee.vIEw.SimpleDraweeVIEw;public class MainActivity extends AppCompatActivity {  @OverrIDe  protected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    Fresco.initialize(this);//需要在setContentVIEw之前初始化    setContentVIEw(R.layout.activity_main);  }  //点击事件加载网络图片代码  public voID loadInternetimage(VIEw vIEw){    Uri uri = Uri.parse("http://r.photo.store.qq.com/psb?/V12kkHqD1CWRD4/MeykWt0NXu0stiBFzf378D7ajKSDet6k1.Vaqmq2vps!/r/dKMAAAAAAAAA");    SimpleDraweeVIEw draweeVIEw = (SimpleDraweeVIEw) findVIEwByID(R.ID.my_image_vIEw);    draweeVIEw.setimageURI(uri);  }}

剩下的,Fresco会替你完成,比如:显示占位图直到加载完成;下载图片;缓存图片;图片不再显示时,从内存中移除等等等等。

 本文仅仅介绍了Fresco最基本的使用方法,大家伙可以访问官网来尝试其他功能实现。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的Android使用开源框架Fresco处理图片全部内容,希望文章能够帮你解决Android使用开源框架Fresco处理图片所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1147265.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存