Fresco

来源:互联网 发布:系统盘瘦身软件 编辑:程序博客网 时间:2024/06/04 20:13
Fresco是 Facebook 出品,是新一代的图片加载库,因为Android应用程序可用的内存有限,经常会因为图片加载导致OOM,
虽然有各种手段去优化,尽量减少出现 OOM 的可能性,但是永远没法避免,尤其某些低端手机 OOM 更是严重。
而Facebook就另辟蹊径,既然没法在 Java 层处理,我们就在更底层的Native堆做手脚。于是 Fresco 将图片放到一个
特别的内存区域叫 Ashmem 区,就是属于 Native堆,图片将不再占用 App 的内存,Java 层对此无能为力,
这里是属于 C++ 的地盘,所以能大大的减少 OOM。

所以此库很强大,不过用起来也比较复杂,包也比较大,貌似有2、3M,底层涉及到的 C++ 领域,想读源码也比较困难。

github地址:https://github.com/facebook/fresco
中文api:https://www.fresco-cn.org/docs/


步骤
1, 添加依赖

2, 初始化Fresco , 自定义一个Aplication 的子类,

//初始化Fresco
Fresco.initialize(this);


3,在清单文件中引入

4, 在布局页面中, 添加控件

添加命名空间

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

<com.facebook.drawee.view.SimpleDraweeView/>

fresco:placeholderImage="@mipmap/ic_launcher” 占位图片
fresco:roundedCornerRadius="1dp" 设置圆角的角度
fresco:roundTopLeft="true" 左上角是否为圆角
fresco:roundTopRight="false"
fresco:roundBottomLeft="false"
fresco:roundBottomRight="true"
fresco:roundWithOverlayColor="@color/corner_color" 填充的颜色
fresco:roundingBorderWidth="2dp" 边界线的宽度
fresco:roundingBorderColor="@color/border_color" 边界线的颜色



5, 在Activity中加载图片
sdv.setImageUri (uri);


实例代码

导入依赖:

compile 'com.facebook.fresco:fresco:1.5.0'

MyApp.java --- 要记得在清单文件中引入哦

public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
//初始化Fresco
Fresco.initialize(this);
}
}

布局页面
<com.facebook.drawee.view.SimpleDraweeView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/sdv"
fresco:placeholderImage="@mipmap/ic_launcher"
fresco:roundedCornerRadius="20dp"
fresco:roundTopLeft="true"
fresco:roundTopRight="true"
fresco:roundBottomLeft="true"
fresco:roundBottomRight="true"
fresco:roundWithOverlayColor="@color/colorAccent"
fresco:roundingBorderWidth="10dp"
fresco:roundingBorderColor="@color/colorPrimary"
/>

Activity 加载图片

//加载图片
String imgPath = "http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg";

Uri uri = Uri.parse(imgPath);
mSdv.setImageURI(uri);

原创粉丝点击