随着智能设备的应用越来越多,占用内存越来越大,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();
}
}
}