乐于分享
好东西不私藏

学员fw笔记:安卓8-13开机动画bootanim实战笔记

学员fw笔记:安卓8-13开机动画bootanim实战笔记

@

  • 一、开机动画启动、结束流程
  • 二、openGl基本绘制流程
  • 三、修改绘制android()动画步骤
  • 四、绘制movie()动画
    • desc描述文件
    • 操作步骤
  • 五、android和movie动画结束流程区别
    • android动画的checkExit()
    • movie动画的checkExit()

非常感谢学员朋友秋双jack的在清明假期还努力坚持学习,还给大家分享关于自己学习bootanimation的实战学习笔记,大家记得为他点赞,感谢他的干货笔记分享。

一、开机动画启动、结束流程

  1. init进程启动property服务,通过epoll监听动画开始;
  2. init进程启动SurfaceFlinger,SurfaceFlinger启动过程中通过property_set设置动画开始
  3. epoll监听到后启动Bootanimation
  4. 执行movie或者android动画,执行过程中持续检查”sys.boot_completed”,判断动画是否应该结束
  5. FallbackHome启动后通过AMS->postFinishBooting设置”sys.boot_completed”,结束动画
在这里插入图片描述

二、openGl基本绘制流程

  1. 准备图片
  2. 准备纹理
  3. 绘制纹理

三、修改绘制android()动画步骤

  1. 准备图片./base/core/res/assets/images/图片.png
  2. 类中添加mClockFont定义
  3. 将动画启动固定为android()
  4. initFont()
  5. 设置屏幕绘制区域updateRect、glScissor
  6. drawclock()
  7. 关闭纹理资源

四、绘制movie()动画

desc描述文件

frameworks/base/cmds/bootanimation/Format.md

android13.0比android8.0多了一些选项:FADE好像是设置退出时的淡出效果,收到后用N帧平滑淡出。PROGRESS是否在最后一part显示进度条?

在这里插入图片描述

操作步骤

android8.0步骤

  1. 准备desc文件和part图片,打包成bootanimation.zip

必须要以存储方式打包压缩zip -r -X -Z store bootanimation part*/* desc.txt

  1. 将animation.zip放到frameworks/base/cmds/bootanimation目录下
  2. 编译-实际编译时是在android.mk里面通过命令cp拷贝到system中
  3. 编译完成后在/out/target/product/generic_x86_64/system/media目录下能看到有bootanimation.zip就成功了 无需修改代码

android13.0步骤

  1. 准备desc文件和part图片,打包成bootanimation.zip(必须要以存储方式打包)

必须要以存储方式打包压缩zip -r -X -Z store bootanimation part*/* desc.txt

  1. 将bootanimation.zip放到device/generic/common/bootanimation/
  2. 我的device目标是lunch sdk_phone_x86,所以可以修改./build/make/target/product/sdk_phone_x86.mk,在末尾加上
PRODUCT_COPY_FILES += \    device/generic/common/bootanimation/bootanimation.zip:system/media/bootanimation.zipPRODUCT_ARTIFACT_PATH_REQUIREMENT_ALLOWED_LIST += system/media/bootanimation.zip
  1. 编译

五、android和movie动画结束流程区别

结束动画的流程对于movie和android来说是有区别的: 1.执行android时,有结束动画请求立刻就结束 2.执行movie时,主要判断当前part是否立刻结束,其实对于后面的part无论如何是要完全执行完的。并不是我最初理解的直接结束动画。

android动画的checkExit()

在这里插入图片描述

movie动画的checkExit()

Android13如下的一个desc文件,动画执行完part0后,循环执行part1,直到shouldStopPlayingPart->checkExit()检测到wms设置动画退出。

10803606010 part0 #ffee00 c c00 part1 #ffee00 c c10 part2 #ffee00 c c11 part3 #ffee00 c c10 part4 #ffee00 c c

将part1剩余的部分执行完毕,再执行part2、part3、part4,动画结束。并不是我最初理解的直接结束,part2、part3、part4也不执行了。type=c把后面的图片都播放完,才执行part2type=p立刻停止,执行part2

运行结果:

更多vip免费系统开发经典大厂面试题库获取,课程优惠购买成为vip学员进入vip群,积极讨论各种行业难点痛点疑难问题,答疑服务等。

请联系马哥:

目前所有专题课程如下:
1、经典fw的入门到精通实战八件套专题
详细课表:
Android Framework开发rom实战合集课表/车载车机手机高级系统开发工程必会技能