安卓4.2可用方法2-4,第一种方法未验证。

从理论上来说,android 有4个开机启动画面。

第一个应该是U-BOOT的启动画面,有些设备为了满足按动电源即有显示,在UBOOT里加了开机画面,实现的方式当然只能是写物理地址,也因此随厂家不同具体的实现千差万别。加上我们接触的手机平板等设备大多没这个开机画面,所以这里就不赘述了。

第二个启动画面实际是LINUX的启动画面,但这个启动画面在ANDROID里默认是关闭的,需要打开时就打开kernel选项:

CONFIG_FRAMEBUFFER_CONSOLE

CONFIG_LOGO

意即KERNEL支持帧缓冲控制台,并且显示开机LOGO。

最方便的办法当然是make menuconfig。

第一个对应的配置菜单项为:Device Drivers —> Graphics support —> Console display driver support —> Framebuffer Console support。

第二个对应的配置菜单项为:Device Drivers —> Graphics support —> Bootup logo。

具体执行第一个动画的文件在 kernel/drivers/video/fbmem.c

里面有fb_prepare_logo函数,负责LOAD 开机画面。这个函数会调用kernel/drivers/video/logo/logo.c的fb_find_logo函数来确认最终会用哪张图片。

开机的图片也都在kernel/drivers/video/logo/ 目录下,要注意这些图片不是标准的PNG等格式,网上提供了工具来进行转换为所需的PPM格式,这里就不赘述了。

第三个开机画面已经进入了android的范围,是在INIT进程启动的时候加载的。

具体来说,是在system/core/init/init.c 里干的。

queue_builtin_action(console_init_action, “console_init”);

console_init_action函数中有一行:

load_565rle_image(INIT_IMAGE_FILE)

这个函数简单说就是显示了一张图,图的路径在INIT_IMAGE_FILE。
INIT_IMAGE_FILE的定义是在system/core/init/init.h:

#define INIT_IMAGE_FILE “/initlogo.rle”
这个rle文件一般放在device目录下,可以自己用命令搜寻。网上也有工具提供各种图片对这个RLE格式的转换。

第四个开机画面,是我们最常见的安卓手机开机画面。从实现方式来说,其实就是在init.rc里添加了一个bootAnimation的服务,这个服务不是自动运行的,它有一定的运行条件,具体可以参看下它的定义:

service bootanim /system/bin/bootanimation
class main
user graphics
group graphics
disabled
oneshot
service shutdownanim /system/bin/bootanimation -shutdown
class main
user graphics
group graphics
disabled
oneshot

什么时候它会被执行呢?简单说,就是surfaceFlinger启动的时候,会改变系统变量让它起来,而系统完成启动后(launcher已经起来了),activityManagerService会辗转通知surfaceFlinger,然后又用改变系统属性的办法关闭bootanimation进程。

如上所述,我们就理解了bootanimation是一个循环执行的进程。它的代码在:

frameworks/base/cmds/bootanimation/BootAnimation.cpp

从代码可知这次开机动画有2种模式,一种是使用两张图片利用某种效果来造成动态,另一种则是用一个图包循环显示的方式来形成动态。当然,这时因为mediaplayer已经起来,播放开机动画的时候可以同时播放开机音乐。第一种双图片模式称为android模式,第二种图包模式称为movie模式,他们在循环时通过条件变量来选择其一:

if (mAndroidAnimation) {
r = android();
} else {
r = movie();
}

这两种模式具体的实现动画的代码比较简单,就不讨论了,只看定义需要的文件之处:

第一种android模式:

initTexture(&mAndroid[0], mAssets, “images/android-logo-mask.png”);
initTexture(&mAndroid[1], mAssets, “images/android-logo-shine.png”);
这两张图片都在frameworks/base/core/res/assets/images目录下,替换即可。

第二种movie模式:

mZip.open(USER_BOOTANIMATION_FILE) == NO_ERROR)

mZip.open(SYSTEM_BOOTANIMATION_FILE) == NO_ERROR)
#define USER_BOOTANIMATION_FILE “/data/local/bootanimation.zip”
#define SYSTEM_BOOTANIMATION_FILE “/system/media/bootanimation.zip”
找到并替换bootanimation.zip即可。

转自:https://www.cnblogs.com/ancongliang/p/7761446.html

安卓开机logo和开机动画的几种实现方法相关推荐

  1. Android系统定制开机logo和开机动画

    定制开机logo和开机动画 开机logo 开机动画 bootanimation.zip 生成zip文件 添加新的开机动画 开机logo MTK ASOP中lk阶段的logo是开机后的第一个界面,也被称 ...

  2. Android 8.0 开机动画,RK3326 android10.0(Q) 开机logo+开关机动画替换

    RK3326 android10.0(Q) 开机logo+开关机动画替换 2020年08月14日 | 萬仟网移动技术 | 我要评论 开机logouboot和kernel阶段的logo分别为开机显示的第 ...

  3. Rockchip3066 修改开机 LOGO 和开机动画

    Rockchip3066 修改开机 LOGO 和 开机动画: 一.主要使用的工具是:FirmwareTool_Release_v3.3 文件夹,RK30DevelopTool 文件夹,还有 RKFac ...

  4. Android修改开机Logo和开机动画

    做车机一般都会修改开机Logo和开机动画,下面只是记录我项目中修改开机Logo和开机动画的方法,仅供参考: 关于开机logo的修改,是将一张分辨率合适的名字必须为boot_logo.bmp格式的位深是 ...

  5. python打字机效果_打字效果动画的4种实现方法(超简单)

    方法一(纯css实现): html代码: 打字动画打字动画打字动画 css样式: .typing{ font-size: 1rem; padding-top: 6%; margin-bottom: 5 ...

  6. android 4.4 锁屏密码,安卓手机忘记锁屏密码怎么办?安卓手机绕过锁屏密码的几种解决方法...

    在2003年有一部冯小刚执导的电影叫作<手机>相信不少人都看过,那句做人要厚道的经典台词流传至今.电影讲述的是男主角手机中隐藏着的秘密被妻子发现而引发的一系列故事,从此手机又有了一个外号叫 ...

  7. DIY固件系列教程——实现开机LOGO三屏动画的完全替换【转】

    本文转载自:http://blog.csdn.net/sdgaojian/article/details/9192433 本教程需要用到如下工具: 1,7Z压缩工具 2,AddCrc32效验工具 3, ...

  8. rk3399 u-boot修改开机logo以及开机动画和开机视频

    首先分析了一下uboot启动流程中的一部分代码,如下 第一部分:开机logo(下面代码分析排版有点乱,可以忽略) 1. ​ board_late_init //rk33xx.cboard/rockch ...

  9. Android 更换开机logo和开机动画

    Android版本:8.1 一丶开机logo的替换 开机logo有kernel logo和uboot logo两个 如何找到对应的图片? 确认当前项目的设备使用的是哪种尺寸的logo 一般在对应项目的 ...

最新文章

  1. hdu2006 求奇数的乘积【C++】
  2. oracle10g总结
  3. Android被忽略的tools
  4. 端口如何支持非localhost访问_Spring Boot 教程:CORS 支持
  5. allegro 16.6/17.4 中如何将实心焊盘显示为空心焊盘
  6. 微信公众平台新增语义理解接口
  7. link标签引入.css文件(目的):适配不同屏幕
  8. docker私有仓库Harbor 使用文档
  9. turtle填充随机颜色同心圆
  10. Android.mk 使用 环境 小结
  11. 金融数据获取的api接口
  12. Luogu1373 小a和uim之大逃离
  13. ccf中文期刊目录_中国计算机学会CCF推荐中文科技期刊目录
  14. COCO数据集合解析
  15. 关于中国教育的一些思考
  16. 物联网发展跨越拐点!2020 AIoT产业年终盛典圆满落幕
  17. 三角(Triangle)
  18. c语言-简单输出整数
  19. remix os显卡linux,Remix OS for PC 详细版的安装教程
  20. 命令行实现URL编解码

热门文章

  1. 游戏特效,只管炫酷炸裂就完事了!??
  2. Linux下Desktop文件入门
  3. Hadoop笔记Jar运行代码及其格式
  4. Unity3D C# 单例属性和单例模板及优缺点
  5. 2009年上海中医药大学博士拟录取名单暨公、自费公示
  6. 3u8633还在飞吗_5月14日3U8633航班在成都迫降危险性有多大?附刘机长专访
  7. 姿态估计之2D人体姿态估计 - (OpenPose) Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields
  8. 大型网站技术架构:核心原理与案例分析——高可用
  9. 零信任网络的一个重要功能:信任管理
  10. 剑指offer | 递归数列