图片加载和处理的又一个神器 Fresco 的使用摘要记录

官方网站:http://fresco-cn.org/引入Fresco编辑和纠错类库发布到了Maven中央库:1. Android Studio 或者 Gradledependencies { compile 'com.facebook.fresco:fresco:0.6.0+'}开始使用 Fresco编辑和纠错
摘要由CSDN通过智能技术生成

官方网站:http://fresco-cn.org/


为什么使用Fresco:
Fresco 会替我们完成,显示占位图直到加载完成,下载图片,缓存图片,图片不再显示时候,从内存中移出;
注意Fresco的图片的宽高一定不能都是wrap_content,如果都是的话就不会显示图片了


0: 首先需要导入Frsco的包
1: 然后需要添加网络的访问权限
++++++++++++++++++++++++++++++++++++


2: 然后新建一个Application 在这个里面执行Fresco.initialize(context)的初始化
3:然后在xml 的布局文件中,加入命名空间
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fresco="http://schemas.android.com/apk/res-auto"
4:在布局中加入SimpleDraweeView,注意这里的placeholderImage 是用来显示站位图的。
<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/my_image_view"
    android:layout_width="20dp"
    android:layout_height="20dp"
    fresco:placeholderImage="@drawable/my_drawable"
  />


5: setImageURI()的方法来添加图片。
剩下的Fresco 会替我们完成,显示占位图知道加载完成,下载图片,缓存图片,图片不再显示时候,从内存中移出。


6:其中setImageURI(),
如果是网络上面的图片直接就是Uri.parse(网址),
如果是包里面的文件就是使用res://mipmap/+R.mipmap.yoyo
如果是android 手机目录中的文件就要使用file:///data/data/com.example.xue.frescodemo/files/345.jpg 注意 file是三条杠




如果需要用到mipmap里面的图片使用:
Uri uri = Uri.parse("res://包名(实际可以是任何字符串甚至留空)/" + R.drawable.ic_launcher)


draweeView_url.setImageURI(Uri.parse("https://material-design.storage.googleapis.com/publish/material_v_4/material_ext_publish/0Bx4BSt6jniD7NndTQW9VZTlZV2s/materialdesign_principles_bold.png"));
draweeView_res.setImageURI(Uri.parse("res://mipmap/"+R.mipmap.yoyo));
draweeView_local.setImageURI(Uri.parse("file:///data/data/com.example.xue.frescodemo/files/345.jpg"));




7:还可以设置进度条:使用的方法是setProgressBarImage
++++++++++++++++++++++++++++++++++++++++++++++



笔记:

如果需要用到mipmap里面的图片使用:
Uri uri = Uri.parse("res://包名(实际可以是任何字符串甚至留空)/" + R.drawable.ic_launcher)

draweeView_url.setImageURI(Uri.parse("https://material-design.storage.googleapis.com/publish/material_v_4/material_ext_publish/0Bx4BSt6jniD7NndTQW9VZTlZV2s/materialdesign_principles_bold.png"));
draweeView_res.setImageURI(Uri.parse("res://mipmap/"+R.mipmap.yoyo));
draweeView_local.setImageURI(Uri.parse("file:///data/data/com.example.xue.frescodemo/files/345.jpg"));


要设置进度条:
要显示进度,最简单的办法就是在 构建 hierarchy 时使用 ProgressBarDrawable,如下:
.setProgressBarImage(new ProgressBarDrawable())
        GenericDraweeHierarchyBuilder builder = new GenericDraweeHierarchyBuilder(getResources());
        GenericDraweeHierarchy genericDraweeHierarchy = builder.setProgressBarImage(new ProgressBarDrawable()).build();


        GenericDraweeHierarchyBuilder builder_res = new GenericDraweeHierarchyBuilder(getResources());
        GenericDraweeHierarchy genericDraweeHierarchy_res = builder_res.setProgressBarImage(new ProgressBarDrawable()).build();


        draweeView_url.setHierarchy(genericDraweeHierarchy);
        draweeView_res.setHierarchy(genericDraweeHierarchy_res);

设置缓存:

/**
 * Created by XUE on 2015/12/30.
 */
public class BaseApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this)
                .setBitmapMemoryCacheParamsSupplier(new Supplier<MemoryCacheParams>() {
                    @Override
                    public MemoryCacheParams get() {


                        return new MemoryCacheParams(20<<20,
                                100,
                                Integer.MAX_VALUE,
                                Integer.MAX_VALUE,
                                Integer.MAX_VALUE
                        );
                    }
                }).setMainDiskCacheConfig(DiskCacheConfig.newBuilder()
                .setMaxCacheSize(50<<20)
                .setBaseDirectoryPath(getCacheDir())
                .setBaseDirectoryName("fresco")
                .build())
                .setBitmapsConfig(Bitmap.Config.RGB_565)
                .build();
        Fresco.initialize(this);
    }
}




引入Fresco

1. Android Studio 或者 Gradle

dependencies {
    
  compile 'com.facebook.fresco:fresco:0.6.0+'
}

开始使用 Fresco

如果你仅仅是想简单下载一张网络图片,在下载完成之前,显示一张占位图,那么简单使用SimpleDraweeView 即可。

为了下载网络图片,请确保在 AndroidManifest.xml 中有以下权限:

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

在 Application 初始化时,在应用调用 setContentView() 之前,进行初始化:(这里需要自己自定义Application,然后在清单文件中指定)

Fresco.initialize(context);

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

<!-- 其他元素 -->
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fresco="http://schemas.android.com/apk/res-auto">

加入SimpleDraweeView:

<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/my_image_view"
    android:layout_width="20dp"
    android:layout_height="20dp"
    fresco:placeholderImage="@drawable/my_drawable"
  />

开始加载图片

Uri uri = Uri.parse("https://raw.githubusercontent.com/facebook/fresco/gh-pages/static/fresco-logo.png");
SimpleDraweeView draweeView = (SimpleDraweeView) findViewById(R.id.my_image_view);
draweeView.setImageURI(uri);

剩下的,Fresco会替你完成:

  • 显示占位图直到加载完成;
  • 下载图片;
  • 缓存图片;
  • 图片不再显示时,从内存中移除;

关键概念

Drawees

Drawees 负责图片的呈现,包含几个组件,有点像MVC模式。

DraweeView

继承于 View, 负责图片的显示。

一般情况下,使用SimpleDraweeView 即可. 简单的用法,在这个页面:开始使用 。

它支持很多自定义效果,参见这里: 自定义显示效果.

DraweeHierarchy

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值