自定义控件之帧动画

本文介绍如何避免帧动画导致的OOM问题,通过自定义控件使用SurfaceView实现帧动画。通过加载单张图片并回收,利用SurfaceView的独立渲染线程避免主线程阻塞。配置文件用于设定图片和显示时间,JavaBean解析配置。在布局中设置控件属性,活动中获取并启动动画。
摘要由CSDN通过智能技术生成

看到了这篇文章的标题,你也大概知道了这篇文章主要讲什么:利用原生的<animation-list>标签配置帧动画时,如果图片过大,或者图片过多,就会OOM。所以,为了避免这样情况,有以下两种方式:

1. 让UI把帧动画设计成gif动画,然后使用某个gif开源框架加载,如:https://github.com/koral--/android-gif-drawable
2. 自定义控件实现帧动画


本文主要讲的是第二种方式,自定义控件实现帧动画,废话少说,直接上代码。


等等,还是先讲一下思路吧。

1. 怎么才能不OOM呢?

答:只要一次加载一张图片不就可以了,在加载第二章图片的时候,把第一张图片recycle掉。


2. 难道要直接继承view吗?

答:直接继承View也可以,但本人没那么强大的能力。本人选择的是SurfaceView。


3. 为啥选择SurfaceView?

答:

a:SurfaceView是View的继承类,这个视图里内嵌了一个专门用于绘制的Surface。你可以控制这个Surface的格式和尺寸。Surfaceview控制这个Surface的绘制位置。

b:Surfaceview提供了两个线程:UI线程和渲染线程,他的特性是:可以在主线程之外的线程中向屏幕绘图上,这样可以避免画图任务繁重的时候造成主线程阻塞。


4. 如何像<animation-list>那样,配置图片位置,图片显示时间呢?

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值