Android Glide GifDrawable 模块源码解析

背景

项目有个需求:对GIF动图实时添加文字。

结合之前FollowMe景区导游助手项目中做过图片添加水印,MovieMaker项目中多张图片合成一段具有多种切换效果视频的经验,预测需要对GIF文件的数据进行解码,合成处理,编码输出合成文件。
项目基于Glide库实现GIF图片的显示,因此需要搞清楚GIF文件的数据是怎么显示到ImageView模块。本文记录分析GifDrawable模块的原理的过程。

问题:

  • ImageView中的图片是怎么动起来的?
  • 如果不使用第三方库,自己实现GIF显示,应该怎么设计及实现?其中有哪些坑?
  • GifDrawable模块是什么?为什么需要有这个模块?该模块的输入、输出数据是什么?该模块在系统中处于什么样的层次?模块内部的数据结构和算法是什么?

猜测:
如果是自定义View中的图片需要动起来,则需要主线程每隔一定时间在Canvas上画不同的Bitmap。

GifDrawable 简介

以下基于2016/11/01 master版本代码。

数据结构

GifDrawable
    GifState
        BitmapPool
        GifFrameLoader

类层次结构

Object
    Drawable
        GifDrawable

GifDrawable本质是个Drawable,属于View中的子模块/底层模块。其中View和Drawable的层次关系:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值