全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android使用开源框架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图片加载优化的方案  # 详解Android之图片加载框架Fresco基本使用(二)  # 详解Android之图片加载框架Fresco基本使用(一)  # 详细分析Fresco源码之图片加载流程  # 加载  # 是一个  # 不支持  # 使用这个  # 官网  # 的是  # 都是  # 放在  # 又是  # 我这  # 要在  # 你不  # 很高  # 最喜欢  # 可以通过  # 给大家  # 详细介绍  # 再去  # 按下  # 较小 


相关文章: 小建面朝正北,A点实际方位是否存在偏差?  ,网站推广常用方法?  如何选择建站程序?包含哪些必备功能与类型?  寿县云建站:智能SEO优化与多行业模板快速上线指南  广东企业建站网站优化与SEO营销核心策略指南  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  如何通过WDCP绑定主域名及创建子域名站点?  建站之星2.7模板:企业网站建设与h5定制设计专题  专业商城网站制作公司有哪些,pi商城官网是哪个?  如何快速重置建站主机并恢复默认配置?  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  常州自助建站费用包含哪些项目?  如何在香港服务器上快速搭建免备案网站?  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  如何用美橙互联一键搭建多站合一网站?  如何挑选优质建站一级代理提升网站排名?  建站三合一如何选?哪家性价比更高?  如何在Tomcat中配置并部署网站项目?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?  如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?  如何在阿里云ECS服务器部署织梦CMS网站?  南宁网站建设制作定制,南宁网站建设可以定制吗?  如何选择最佳自助建站系统?快速指南解析优劣  Swift中循环语句中的转移语句 break 和 continue  济南网站制作的价格,历城一职专官方网站?  C#如何在一个XML文件中查找并替换文本内容  宝塔建站助手安装配置与建站模板使用全流程解析  建站之星安装模板失败:服务器环境不兼容?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  北京建设网站制作公司,北京古代建筑博物馆预约官网?  建站之星如何助力企业快速打造五合一网站?  代购小票制作网站有哪些,购物小票的简要说明?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  网站制作公司排行榜,抖音怎样做个人官方网站  建站之星安装步骤有哪些常见问题?  网站制作公司,橙子建站是合法的吗?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  小程序网站制作需要准备什么资料,如何制作小程序?  手机网站制作与建设方案,手机网站如何建设?  php json中文编码为null的解决办法  如何使用Golang安装API文档生成工具_快速生成接口文档  建站主机与虚拟主机有何区别?如何选择最优方案?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  制作表格网站有哪些,线上表格怎么弄?  如何快速搭建高效可靠的建站解决方案?  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。