Webp动图的使用方法
2016-05-28 17:56
232 查看
随着智能设备的应用越来越多,占用内存越来越大,apk的大小也逐渐被关注,而影响apk大小的一个很主要的原因就是图片占用内存太多,目前,比较好的使用方法是使用webp格式的图片,或者动图加载,能够将apk的大小减小到40%左右。
现在Android对于webp普通的图片适配已经做的比较好了,就像普通的图片加载方式一样加载就可以了。
对于webp动图,这里就需要借助工具了。
首先加载依赖工具dependencies {
compile 'com.facebook.fresco:fresco:0.9.0+'
}
下面是我自己写的一个工具类,直接使用即可
/**
* <p>
* Description:
* </p>
*
* @author dailei
* @version V1.0.0
* @className WebpAnimate
* @date 2016/5/12
*/
public class WebpAnimate
{
private SimpleDraweeView mSimpleDraweeView = null;
private Context mContext = null;
public WebpAnimate(Context context)
{
mContext = context;
}
/**
* 概述:webp动图的展示<br/>
* 适用条件:<br/>
* 执行流程:<br/>
* 使用方法:<br/>
* 注意事项:<br/>
*
* date 16/4/28
*/
public View webpAnimateView()
{
if (mSimpleDraweeView != null)
{
mSimpleDraweeView = null;
}
Fresco.initialize(mContext); //使用webp动图,在加载之前必须先使用此方法
mSimpleDraweeView = new SimpleDraweeView(mContext);
return mSimpleDraweeView;
}
public void webpAnimateStart(String path)
{
ControllerListener controllerListener = new BaseControllerListener<ImageInfo>()
{
@Override
public void onFinalImageSet(
String id,
@Nullable ImageInfo imageInfo,
@Nullable Animatable anim)
{
if (anim != null)
{
// app-specific logic to enable animation starting
anim.start();
}
}
};
File file = new File(path);
Uri uri = Uri.parse("file://" + file);
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setUri(uri)
.setControllerListener(controllerListener)
.build();
mSimpleDraweeView.setController(controller);
Animatable animation = mSimpleDraweeView.getController().getAnimatable();
if (animation != null)
{
// 开始播放
animation.start();
}
}
}
现在Android对于webp普通的图片适配已经做的比较好了,就像普通的图片加载方式一样加载就可以了。
对于webp动图,这里就需要借助工具了。
首先加载依赖工具dependencies {
compile 'com.facebook.fresco:fresco:0.9.0+'
}
下面是我自己写的一个工具类,直接使用即可
/**
* <p>
* Description:
* </p>
*
* @author dailei
* @version V1.0.0
* @className WebpAnimate
* @date 2016/5/12
*/
public class WebpAnimate
{
private SimpleDraweeView mSimpleDraweeView = null;
private Context mContext = null;
public WebpAnimate(Context context)
{
mContext = context;
}
/**
* 概述:webp动图的展示<br/>
* 适用条件:<br/>
* 执行流程:<br/>
* 使用方法:<br/>
* 注意事项:<br/>
*
* date 16/4/28
*/
public View webpAnimateView()
{
if (mSimpleDraweeView != null)
{
mSimpleDraweeView = null;
}
Fresco.initialize(mContext); //使用webp动图,在加载之前必须先使用此方法
mSimpleDraweeView = new SimpleDraweeView(mContext);
return mSimpleDraweeView;
}
public void webpAnimateStart(String path)
{
ControllerListener controllerListener = new BaseControllerListener<ImageInfo>()
{
@Override
public void onFinalImageSet(
String id,
@Nullable ImageInfo imageInfo,
@Nullable Animatable anim)
{
if (anim != null)
{
// app-specific logic to enable animation starting
anim.start();
}
}
};
File file = new File(path);
Uri uri = Uri.parse("file://" + file);
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setUri(uri)
.setControllerListener(controllerListener)
.build();
mSimpleDraweeView.setController(controller);
Animatable animation = mSimpleDraweeView.getController().getAnimatable();
if (animation != null)
{
// 开始播放
animation.start();
}
}
}
相关文章推荐
- BZOJ 2460 元素
- java.sql.SQLException: ORA-00911: 无效字符
- (C++)使用模板在编译期计算阶乘
- Python3 爬虫(三) -- 爬取豆瓣首页图片
- 去除tabBar的上横线和navigationBar的下横线方法介绍
- Codeforces478D-Red-Green Towers-DP
- 备忘录模式及php实现
- 浅谈HTTP中Get与Post的区别
- ADB SHELL 你值得拥有
- 网站系统的“用户登录”
- STL学习笔记--4、序列式容器之vector
- Ubuntu利用tasksel安装配置lamp环境
- 几种JS转跳页面方式
- iOS学习- 03 控件
- 《代码大全(第二版)》阅读笔记02
- Spark MLib 数据类型
- Android 6.0 ListFiles 返回null
- jquery cookie记住用户名和密码(使用方法)
- nsci.txt 是什么?
- 【例题】【费马小定理(降幂)、递推】NKOJ 3687 整数拆分