AP独立实现Animated GIF播放

目前Android原生部分并不完全支持动态GIF的播放,“并不完全”的意思是:google在jni、native层实现了gif的解码和每帧绘制,但如要在AP中动态绘制每帧图片,需要AP通过自己定义view的方式去完成gif动态播放。

1.GifView实现简易原理

(1) 定义GifView类,继承View类;

(2)在GifView构造器中使用android.graphics.Movie类的静态方法decodeStream(InputStream is)解码gif文件;

(3)重写onDraw()方法,具体flow如下:

2.需要注意的地方

由于API 11 之后不能使用硬件渲染movie类,因此需要在代码中声明:

/**
* Starting from HONEYCOMB have to turn off HW acceleration to draw
* Movie on Canvas.
*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
setLayerType(View.LAYER_TYPE_SOFTWARE, null );
}

或者在manifest.xml中声明:

android:hardwareAccelerated="false"

3.GifView demo project

请使用Android Studio打开:testAnimatedGif.rar

参考

1.http://gundumw100.iteye.com/blog/1182109

2.http://blog.sina.com.cn/s/blog_7033e38201010qc1.html

3.http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0921/1701.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值