Android 开机logo动画

【Android】Android 开机动画简述 Android 的开机动画是由 Linux 本地守护程序 bootanimation 专门控制实现的,其代码在: frameworks/base/cmds/bootanimation/ 目录下,修改 Android 开机动画有两种方式: 1、蒙板图片(蒙版动画)替换: 替换 frameworks/base/core/res/assets/images/ 目录下的两个图片文件:an... 阅读详情
Android 开机会出现3个画面:
1. Linux 系统启动,出现Linux小企鹅画面(reboot)(Android 1.5及以上版本已经取消加载图片);
2. Android平台启动初始化,出现"A N D R I O D"文字字样画面;
3. Android平台图形系统启动,出现含闪动的ANDROID字样的动画图片(start)。

1、开机图片(Linux小企鹅) (Android 1.5及以上版本已经取消加载图片);
Linux Kernel引导启动后,加载该图片。
logo.c中定义nologo,在fb_find_logo(int depth)函数中根据nologo的值判断是否需要加载相应图片。
代码如下:
static int nologo;
module_param(nologo, bool, 0);
MODULE_PARM_DESC(nologo, "Disables startup logo");
/* logo's are marked __initdata. Use __init_refok to tell
* modpost that it is intended that this function uses data
* marked __initdata.
*/
const struct linux_logo * __init_refok fb_find_logo(int depth)
{
const struct linux_logo *logo = NULL;
if (nologo)
return NULL;
        ......
}
相关代码:
/kernel/drivers/video/fbmem.c
/kernel/drivers/video/logo/logo.c
/kernel/drivers/video/logo/Kconfig
/kernel/include/linux/linux_logo.h

2、开机文字("A N D R I O D")
Android 系统启动后,init.c中main()调用load_565rle_image()函数读取/initlogo.rle(一张565 rle压缩的位图),如果读取成功,则在/dev/graphics/fb0显示Logo图片;如果读取失败,则将/dev/tty0设为TEXT模式,并打开/dev/tty0,输出文本“A N D R I O D”字样。
定义加载图片文件名称
#define INIT_IMAGE_FILE "/initlogo.rle"
int load_565rle_image( char *file_name );
#endif
init.c中main()加载/initlogo.rle文件。

if( load_565rle_image(INIT_IMAGE_FILE) ) {//加载initlogo.rle文件
    fd = open("/dev/tty0", O_WRONLY);//将/dev/tty0设为text模式
    if (fd >= 0) {
        const char *msg;
            msg = "\n"
        "\n"
        "\n"
        "\n"
        "\n"
        "\n"
        "\n"  // console is 40 cols x 30 lines
        "\n"
        "\n"
        "\n"
        "\n"
        "\n"
        "\n"
        "\n"
        "             A N D R O I D ";
        write(fd, msg, strlen(msg));
        close(fd);
    }
}
相关代码:
/system/core/init/init.c
   
/system/core/init/init.h
/system/core/init/init.rc
/system/core/init/logo.c
*.rle文件的制作步骤:
使用PS制作一张320*480的图片,保存时选“保存为 Web 所用格式”,然后在弹开的窗口上,“预设”项选择“PNG-24”,保存为android_logo.png,只支持png-24,其他格式生成的rle文件显示不正常。

  2. 将图片转换为raw格式

  使用linux下的ImageMagick自带的convert命令,进行raw格式转换,命令为:

  convert -depth 8 android_logo.png rgb:android_logo.raw

  注:ubuntu 10.04 默认已经安装ImgageMagick工具,如果当前系统没有安装,可以执行下面的命令安装:

  sudo apt-get install imagemagick

  3. 将raw格式转化为rle文件

  需要用到android编译后的rgb2565工具,在android/out/host/linux-x86/bin目录下(android为当前源码所在目录),转换命令如下:

  rgb2565 -rle < android_logo.raw > initlogo.rle

  到目前为止,启动需要显示的图像已经做好了,就是initlogo.rle,注意文件名必须是这个,如果想改文件名,需要修改android/system/core/init/init.h中的宏:

  #define INIT_IMAGE_FILE "/initlogo.rle"

    cpio -i -F ../ramdisk.img




3、开机动画(闪动的ANDROID字样的动画图片)
Android 1.5版本:Android的系统登录动画类似于Windows系统的滚动条,是由前景和背景两张PNG图片组成,这两张图片存在于手机或模拟器/system/framework /framework-res.apk文件当中,对应原文件位于/frameworks/base/core/res/assets/images/。前景图片(android-logo-mask.png)上的Android文字部分镂空,背景图片(android-logo-shine.png)则是简单的纹理。系统登录时,前景图片在最上层显示,程序代码(BootAnimation.android())控制背景图片连续滚动,透过前景图片文字镂空部分滚动显示背景纹理,从而实现动画效果。
相关代码:
/frameworks/base/libs/surfaceflinger/BootAnimation.h
/frameworks/base/libs/surfaceflinger/BootAnimation.cpp
/frameworks/base/core/res/assets/images/android-logo-mask.png  Android默认的前景图片,文字部分镂空,大小256×64
/frameworks/base/core/res/assets/images/android-logo-shine.png Android默认的背景图片,有动感效果,大小512×64

Android 1.6及以上版本:
init.c解析init.rc(其中定义服务:“service bootanim /system/bin/bootanimation”),bootanim 服务由SurfaceFlinger.readyToRun()(property_set("ctl.start", "bootanim");)执行开机动画、bootFinished()(property_set("ctl.stop", "bootanim");)执行停止开机动画。
BootAnimation.h和BootAnimation.cpp文件放到了/frameworks/base/cmds/bootanimation目录下了,增加了一个入口文件bootanimation_main.cpp。Android.mk文件中可以看到,将开机动画从原来的SurfaceFlinger里提取出来了,生成可执行文件:bootanimation。Android.mk代码如下:
//=============Android.mk======================
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
    bootanimation_main.cpp \
    BootAnimation.cpp
# need "-lrt" on Linux simulator to pick up clock_gettime
ifeq ($(TARGET_SIMULATOR),true)
    ifeq ($(HOST_OS),linux)
        LOCAL_LDLIBS += -lrt
    endif
endif
LOCAL_SHARED_LIBRARIES := \
    libcutils \
    libutils \
    libui \
    libcorecg \
    libsgl \
    libEGL \
    libGLESv1_CM \
    libmedia  
LOCAL_C_INCLUDES := \
    $(call include-path-for, corecg graphics)
LOCAL_MODULE:= bootanimation
include $(BUILD_EXECUTABLE)
//==========================================
(1)adb shell后,可以直接运行“bootanimation”来重新看开机动画,它会一直处于动画状态,而不会停止。
(2)adb shell后,命令“setprop ctl.start bootanim”执行开机动画;命令“getprop ctl.start bootanim”停止开机动画。这两句命令分别对应SurfaceFlinger.cpp的两句语句:property_set("ctl.start", "bootanim");和property_set("ctl.stop", "bootanim");
相关文件:
/frameworks/base/cmds/bootanimation/BootAnimation.h
/frameworks/base/cmds/bootanimation/BootAnimation.cpp
/frameworks/base/cmds/bootanimation/bootanimation_main.cpp
/system/core/init/init.c

/system/core/rootdir/init.rc


查看 BootAnimation.cpp里面的内容,你就会发现,用户自己制定的logo路径为:#define USER_BOOTANIMATION_FILE "/data/local/bootanimation.zip"
 系统的为: #define SYSTEM_BOOTANIMATION_FILE "/system/media/bootanimation.zip"

要修改logo动画的话,把做好的bootanimation.zip文件放到这两个目录下就ok了




开机动画的制作,先要从bootanimation.zip这个压缩包说起,从网上随便下载一个动画包,解压后可以得到part0 part1和desc.txt,其中desc.txt最重要,打开desc.txt我们可以看到

其中480 852意思是说你开机动画在屏幕先以多少的分辨率显示,我的是480 852,那么不论图片大小、比例都会按照这个分辨率来播放,所以制作的时候请注意,就算要修改也要按照比例来(最大不要超过480 852)。后面的25代表的是帧数,添多少,每秒就按这个数来播放图片!通俗的说就是图片的播放速度。(小提示中国的电视帧数都是25,而欧美的是29)

  part0 part1的作用请看下面

  p 1 0 part0 这句指令就代表这part0文件夹内的图片只按名称顺序播放一次

  p 0 0 part1 这一句指令代表着part1文件夹内的图片会循环反复播放:

  了解了各文件和文件夹的作用,我们再来看一看,动画的组成部分——图片

  图片必须使用PNG格式的,至于是PNG8 还是PNG24 32都无所谓,但必须是PNG的,所有图片必须按名称顺序排列,因为播放的顺序就是按名称的。

  图片和desc.txt都准备好后,就要开始压缩了,压缩格式选择ZIP,压缩方式选择存储(很重要!!!)

  desc.txt文件分析:

  480 427 30

  宽 高 帧数

  p 1 0 part0

  标志符 循环次数 阶段切换间隔时间 对应目录名

  p 0 10 part1

  标志符 循环次数 阶段切换间隔时间 对应目录名

  ==================

  标志符:

  必须是: p

  循环次数:

  0 : 表示本阶段无限循环

  阶段切换间隔时间:

  单位是一个帧的持续时间,比如帧数是30,那么帧的持续时间就是1秒/30 = 33.3毫秒。

  阶段切换间隔时间期间开机动画进程进入休眠,把CPU时间让给初始化系统使用。

  也就是间隔长启动会快,但会影响动画效果。


android的开机动画,设置安卓开机动画、开机logo 我们要修改的是system>media文件夹下的bootanimation.zip(手机开机动画)这个文件先来讲讲这个文件结构:该zip解压后得到两个文件,第一个目录存放了开机时播放的图片(图为佳域G3原厂的动绘图片包),见下图:图片编号001,002,.......010这些是用来控制图片播放顺序的。第二个 desc. txt的文本文档存放的数据和文字用来控制播放图片的速度(帧速)和播放方... 阅读详情

相关推荐

【Android 12 AOSP学习】Android系统修改开机logo图片及开机动画还有遇到的问题

熟悉Android系统,对Android系统修改开机动画和修改过程中遇到的问题

etrospect的博客 9120

Android 开机动画替换

1、蒙版图片替换: 替换 frameworks/base/core/res/assets/images 目录下的两张图片文件,android-logo-mask.png 和 android-logo-shine.png。 android-logo-mask.png 是镂空蒙版图片,android-logo-shine.png是镂空蒙版后面的闪光图片,两张图片通过叠加移动达到动画效果。 (1)用 P...

chuangjianNDSC的专栏 1342

UIS7885 + Android13平台修改开机Logo、开机动画

文章介绍了在UIS7885+A13平台上修改开机Logo和动画的方法。修改Logo有两种方式:直接替换指定路径的bmp图片或制作logo.bin文件。后者需先确认屏幕尺寸,替换对应目录的bmp文件,再通过工具转换为logo.bin。替换开机动画需制作特定格式的zip文件,将其拷贝至system/media目录并配置相关mk文件。两种修改都需要在vendor/sprd/release/pac_config/uis7885_2h10.ini中进行相应设置。

hjlgs的博客 1211

Android——修改开机画面

Android——修改开机画面 开机第三屏(android动画) 编译成功后在android源码根目录生成out目录, 修改android\out\target\product\sdkDemo\system\framework目录下的framework-res.apk 用winrar格式打开,替换assets\images里的2张图片即可 开机第二屏(android字

For Heart 3027

UIS7862S + Android10.0修改开机Logo、开机动画

本文介绍了修改Android设备开机LOGO和开机动画的完整流程。开机LOGO修改包括:1)制作符合屏幕尺寸的BMP格式图片;2)替换配置文件中的图片路径;3)编译打包;4)通过烧录工具验证。开机动画修改则涉及:1)准备BMP格式动画帧;2)修改bootanimation.zip文件或源码路径;3)编译systemimage;4)通过adb或fastboot方式验证。文中特别强调了图片格式要求、压缩方法选择以及临时修改和源码修改两种实现方式的差异,并提供了常见问题解答。

hjlgs的博客 6291

MTK Android修改开机动画与Logo

需求是修改MTK Android的开机动画与Logo

zmlovelx(帅得不敢出门 程序员群31843264) 2369

【Android 系统】Android 开机动画的启动

Android 开机动画的启动

看图的博客 728

MTK Android12 更换开机LOGO和开机动画

MTK android12 开机动画和logo

韩家老大的博客 1014

Android 修改开机LOG和启动动画

引言 Android系统在按下开机键之后就会进入启动流程,这个过程本身需要一些时间,而面向用户的往往是厂商定制的一些宣传用的比较绚丽的启动画面。我们在定制自己的系统时,往往需要把这些画面换成我们自己的,一方面可以添加自己的LOGO增加品牌曝光度,另外也可以添加一些特效让用户尝尝鲜 描述 笼统来说,目前android开机画面由三个部分(阶段)组成,第一部分在bootloader启动时显示(静态),第二部分在启动kernel时显示(静态),第三部分在系统启动时(bootanimation)显示(动画)。

a546036242的博客 3421

android修改开机画面及开机动画

修改开机画面及开机动画说明,以及开机动画包,按照说明步骤,即可修改android开机画面和动画。

人工势场法三大致命缺陷?我用ROS+Gazebo做了组对比实验

本文通过ROS与Gazebo仿真实验,深入剖析了人工势场法(APF)在机器人路径规划中的三大经典问题:局部最小值、目标不可达和路径震荡。文章不仅复现了这些缺陷,还对比测试了虚拟目标点法、改进斥力场及运动平滑等主流改进方案,为工程选型提供了基于数据的实用建议。

dapp9builder的博客 215

android 开机动画更换,教程:如何把安卓开机动画,换成谷歌新Logo

昨天深更半夜的时候,谷歌更新了Logo,这是谷歌的第六个Logo版本,采用了时下最为流行的扁平化设计,看起来也更具有现代感。当然了,并不是所有人都喜欢谷歌的新设计,比如说一位微博用户就评论到:此外谷歌还放出了一个gif格式的小动画,看起来也很甚是不错,甚至可以用来作为安卓手机的启动画面,下面雷锋网(公众号:雷锋网)整理了一下相关教程,想要将这个欢快的动画作为手机启动画面的朋友们不妨试一试,此外,你...

weixin_39704246的博客 1162

Mamba-YOLO实战:环境配置+模型训练+精度调优全流程指南(附Colab代码)

在目标检测领域,一场由状态空间模型引发的技术革新正在悄然改写行业格局。近期国际顶级学术期刊连续发布的YOLOv5_mamba、FER-YOLO等突破性成果,不仅刷新了检测精度记录,更开创了结构化状态空间模型(SSM)与经典检测框架的创新融合范式。当前该领域涌现的十大标杆性研究,已在以下维度取得突破性进展:√ 遮挡目标识别准确率提升38%√ 小样本场景泛化能力增强2.7倍√ 视频流检测延迟降低至17ms√ 多目标交叉干扰抑制效果达SOTA。

2501_90555291的博客 1581

android14 修改开机logo和开机动画

其中 “./cust/” 是要打包的文件路径, “./cust.img”生成的固件, “/cust”挂载分区(这个关系不大),“16000000” 大小(可设定为分区大小,和BOARD_WITH_SPECIAL_PARTITIONS 一致) , file_contexts 文件是/cust目录的selinux 权限,见步骤1,如果没有的话,在user版本执行ls -lZ,/cust目录的selinux 权限标签会是unlabeled。给他分配相应的空间,用于存放数据。注意,必须使用/cust(/.*)?

chenxy80的博客 2698

win11怎么安装dosbox和masm来运行汇编程序(小白,萌新篇)

一文教会你如何部署dosbox和masm环境

m0_73279193的博客 4699

SigFit实战:从FEA到光学仿真的热力耦合分析全流程解析

在光机系统与芯片封装等精密工程领域,热与力的耦合效应是影响产品性能与可靠性的核心物理问题。有限元分析(FEA)是预测结构在热、力载荷下变形与应力的基础工具,但其结果通常无法直接用于评估光学性能。这需要一座桥梁,将物理场数据转化为光学设计语言。其核心原理在于数据映射与面形表征技术,例如通过泽尼克多项式拟合,将离散的节点位移分解为离焦、像散等标准光学像差。这项技术的工程价值在于,它实现了多物理场仿真的闭环,使工程师能在设计阶段精准预测热变形或应力对波前误差、调制传递函数等关键光学指标的影响。其典型应用场景包括高

weixin_28630185的博客 334

Android5.1开机LOGO与开机动画

android5.1中,开机LOGO部分和之前版本的并不相同,主要区别在于android LOGO显示部分。此博客所讲之处若有错误,敬请原谅,谢谢! 开机LOGO一般有两种:静态的和动态的,Android开机时共有三种LOGO(5.1之前可能算是4种吧)。 1. uboot显示 2. kernel显示 3. android开机动画 一般情况下将前两幅

HelloBirthday的博客 1万+

【异常】XXL-job触发调度:address:http://192.168.x.x:x/ code:500 msg:xxl-rpc remoting error(connect timed out)

XXL-JOB调度任务失败分析:调度中心(10.254.234.80)与执行器(192.168.x.x)连接超时,返回500错误。主要原因是网络不通或执行器异常:1.网络不通可能由防火墙或网段隔离导致;2.执行器未启动或端口未监听;3.地址配置错误。解决方案:1.关闭代理使用内网;2.测试网络连通性和端口可用性;3.检查执行器进程状态和端口监听情况;4.核对执行器地址配置;5.必要时配置防火墙规则放行端口。

奶爸的编程之路,也就一周冷个三天 413

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

定制开机logo和开机动画开机logo开机动画bootanimation.zip生成zip文件添加新的开机动画 开机logo MTK ASOP中lk阶段的logo是开机后的第一个界面,也被称为U-boot logo,其与Battery logo在编译后会统一生成logo.bin。 查看ASOP源码目录下的配置文件: vendor\mediatek\proprietary\bootable\bootloader\lk\project\8pbsp.mk 找到选项:BOOT_LOGO := wuxga

weixin_41388144的博客 3861

高分六号WFV预处理详细步骤(辐射校正、大气校正、几何校正)

高分六号WFV传感器获得的影像的预处理分为两个步骤:辐射校正和大气校正,辐射校正为了消除传感器的自身误差,大气校正为了消除大气的折射误差。 一、辐射校正 按照红框中信息进行更改。 辐射校正前地物光谱反射率: 校正后的地物光谱曲线的变化: 二、大气校正 ENVI中大气校正一般采用Flaash模型,但是这个模型需要设置许多的参数十分的麻烦,所以采用ENVI商店(app store,这个也需要下载的)里的Flaash Easy To Use 这个插件,可以快速地进行大气校正。 大气校正后的地物反射率 这

qq_41828818的博客 1万+

看GRE协议的数据封装

GRE网络数据封装流程

FanFF的博客 80

android 开机logo及开机动画

当Android系统从Linux内核启动后,将会执行anddroid平台的初始化过程,屏幕上将会出现”A ND R I O D”文字字样画面 Android 系统启动后,读取 /initlogo.rle(一张565rle压缩的位图),如果读取成功,测在/dev/graphics/fb0显示Logo图片;如果读取失败,则将/dev/tty0设为TEXT模式,并打开/dev/tty0,输出文本“A

绳命是入刺的井猜,扔绳是剁么的回晃。 1605

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Android定制开机动画与logo

一、 替换开机logo 在device\qcom\common\display\logo下找到logo_gen.py 2. 如果没有安装Python,先执行以下命令 sudo apt-get install python-imaging 3. 将需要制作logo的图片拷贝到logo_gen.py的同级目录 需要注意的是图片分辨率应该与设备屏分辨率一致 4. 运行如下命令生成splash.img ...

zw3034的博客 3138

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Android 更换开机logo和开机动画

Android版本:8.1 开机logo的替换 开机logo有kernel logo和uboot logo两个 如何找到对应的图片? 确认当前项目的设备使用的是哪种尺寸的logo 一般在对应项目的ProjectConfig.mk文件里可以找到 例如: BOOT_LOGO = hd720 找到vendor\mediatek\proprietary\bootable\bootloader\l...

csdnxialei的博客 1万+

教您自制android的开机动画LOGO

效果视频:http://v.youku.com/v_show/id_XMjcxODMxMTI0.html 第一次看到别人说改里程碑的LOGO我很激动,就安卓那些帖子的方法,我改了,开始用着还行,可是用着别人制作的心里就是不爽。好吧,自己又上网学习,但是总是学的一知半解,唉,经过两天的自我探索,发现了绝妙绝好学习绝对详细的自制LOGO的方法(当然要先谢谢我看过的各位大大的帖)前提:手机已经ROOT.

baiyuanwei的博客 2467
上一篇: [Android] ramdisk.img的生成及解压
下一篇: 添加android 4.0开机音乐
karry_vcent
博客等级 码龄15年 93粉丝 45原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值