android 开机动画logo介绍_desc文件编写:“1024 600 47 p 1 0 part0 p 0 0 part1-程序员宅基地

技术标签: android进阶  

  android开机logo,这一块在工作改动的也是比较多的,也比较简单,不同的公司,不同型号的产品,开机的标识不一样。

                  我们平时目测的开机logo一般是两种:静态的和动画的。其实在实现logo的过程中,有四幅图片:(1)、uboot显示;(2)、kernel显示logo_linux_clut244.ppm;(3)、android第一幅intilogo.rle;(4)、android第二幅,bootanimation。前三幅一般我们做成相同的,(4)为动画显示。启动过程如下所示。

               这篇重点说一下要用到的文件怎么生成,程序方面的就不再去深入,这一块的代码量也不小,一般不需要额什么改动。UBOOT的logo会影响开机的速度,我们也没有做这一块,UBOOT启动还是比较快,几秒钟的黑屏大家还是可以接受。下面从内核logo说起。

 

一、内核logo

 1、内核目录中 make menuconfig

Device Drivers ---->Graphics support ---->Bootup logo ----> Standard 224-color Linux logo 

 

                   把开机LOGO图片保存为bmp或者png格式:如linux.png;linux.bmp通过linux工具把图片转化为:ppm格式。替换:driver/video/logo/logo_linux_clut244.ppm

下面命令需要安装netpbm的工具包 如果没有:sudo apt-get install netpbm

我做的实验,包括脚本可以在这里下载:android logo 脚本

(1)、png格式图片,执行下面命令

[html]  view plain copy
  1. #pngtopnm linuxlogo.png> linuxlogo.pnm  //生成ppm  
  2. #pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm//转换成224颜色  
  3. #pnmtoplainpnm linuxlogo224.pnm > logo_linux_clut224.ppm //转换成ascii格式   

可以把上面命令写成一个脚本,这样使用更方便:

kernelLogo_png.sh

[html]  view plain copy
  1. pngtopnm $1 > linuxlogo.pnm        //$1为参数,这样不用每次改图片名称,后几步为执行过程  
  2. pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm  
  3. pnmtoplainpnm linuxlogo224.pnm > logo_linux_clut224.ppm  
  4. #删除过程中生成不需要的文件  
  5. rm -rf ./linuxlogo.pnm  ./linuxlogo224.pnm   
  6. rm -rf ./linuxlogo.pnm  ./linuxlogo224.pnm  

如下图:①cat ./kenrelLogo_png.sh 查看脚本内容,如下面所解释

②./kenrelLogo_png.sh 执行脚本

③Ls查看到生成的logo_linux_clut224.ppm


(1)、bmp格式的图片

脚本为kenrelLogo_bmp.sh

[html]  view plain copy
  1. convert $1 linuxlogo.png  //把bmp图片转换成png格式,下面过程和png格式图片相同  
  2. pngtopnm linuxlogo.png > linuxlogo.pnm  
  3. pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm  
  4. pnmtoplainpnm linuxlogo224.pnm > logo_linux_clut224.ppm  
  5. rm -rf ./linuxlogo.pnm  ./linuxlogo224.pnm ./linuxlogo.png  

把logo_linux_clut224.ppm拷贝到制作好的LOGO文件到   /drivers/video/logo 文件夹替换  logo_linux_clut224.ppm 文件,删除该文件夹下的logo_linux_clut224.o,编译烧录,就可以看到你所更改的图片。

二、android logo

1、android第一张logo

(1)找一张.png格式的图片,使用linux下的ImageMagick自带的convert命令,进行raw格式转换,命令为:

 

[html]  view plain copy
  1. convert -depth android_logo.pngrgb:android_logo.raw  

 

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

 

[html]  view plain copy
  1. rgb2565 -rle <</span> android_logo.raw >initlogo.rle  

 

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

  sudo apt-getinstall imagemagick

                 为了方便,我们把rgb2565这个bin文件,拷贝到我们做动画的文件夹中。同上面也写一个脚本出来:

android_rle.sh

 

[html]  view plain copy
  1. convert -depth $1 rgb:logo.raw//转换成raw文件  
  2. rgb2565 -rle <</span>logo.raw> initlogo.rle//生成我们要的rle文件,注意:rbg2565在android/out/host/linux-x86/bin目录拷过来。  

 

 

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

[html]  view plain copy
  1. #define INIT_IMAGE_FILE "/initlogo.rle"  

放到相的目录下就行了.


1、android第二张图片(动画)
(1)、开机动画文件为:/system/media/bootanimation.zip是一个标准的zip文件,不过设置压缩率时选择存储。

(2)、linux下用命令打包:

zip -r -X -Zstore ../bootanimation part*/*.png desc.txt


(3)、压缩包的结构:

 

①Part 这个文件夹中为我们所显示的png图片

②desc.txt中的内容我们要分析下,图片美工去做,我们要让正常显示就要在这里面写一些值。看下里面的内容

[html]  view plain copy
  1. 400 800 18  
  2. part0  
  3.   
  4.   
  5. #400 800 为图片的分辨率 400*800  
  6. #18为每秒显示图片的张数,也就是18fps/S  
  7. #p代表定义一个部分。  
  8. #p后面的第一个数是重复播放这一部分次数。如果这个数为0,就无限循环播放  
  9. #p后面第二个数是播放下一个部分前的延迟帧数  
  10. #字符串定义了加载文件的路径  
3 在window下的操作:

3.1  Widows 环境中建立文件夹:

bootanimation

3.2 bootanimation文件夹中建立子文件夹:

part0

part1

然后将一批.png文件拷贝到文件夹part0里面,part1中暂时不放图片文件 

3.3  bootanimation 文件夹中建立文本文件:

desc.txt

    可能在desc.txt中写如下信息(注,该文件是google定义的,可在网上搜索得到):

1024 600 10

p 1 0 part0

p 0 0 part1

文件 desc.txt 的内容解释:

(1)分辨率

1024 600

第一行1024 600:表示机器屏幕分辨率width height

(2)帧率

第一行10:表示每秒中播放10张图片(gong 10zhang )

(3)p 1 0 part0

p:表示play

1:表示播放一遍,如果是0则表示循环播放 

0:表示延时时间

part0:此文件夹下放置开机显示的动画图片,图片分辨率要和机器分辨率一样,否则显示会有问题

(4)p 0 0 part1

part0的图片都显示完毕后,就显示part1中的图片

3.4 在文件夹 bootanimation 内,同时选择“part0, part1, desc.txt,然后压缩 

压缩的设置如下:

a)压缩文件名:

bootanimation.zip

b)压缩文件格式:

ZIP

c)压缩方式:

存储

3.5 将前面生成的bootanimation.zip拷贝到工程中

$ cd  Project_root/

$ cd  device/rockchip/rk2928sdk/apk/

$ mkdir  app_newpad

注:将生成的bootanimation.zip文件拷贝到文件夹app_newpad

3.6 编辑 device.mk

$ cd  Project_root/

$ cd  device/rockchip/rk2928sdk/

$ vi  device.mk

##################################

 copy proprietary apk

##################################

COPY_APK_TARGET := $(call all-apk-files-under,apk)

PRODUCT_COPY_FILES += $(foreach apkName, $(COPY_APK_TARGET), \

$(addprefix $(LOCAL_PATH)/apk/, $(apkName)):$(addprefix system/app/, $(apkName))) 

PRODUCT_COPY_FILES += \

$(LOCAL_PATH)/apk/flashplayer.nm:system/app/flashplayer.nm

# 添加以下信息

# 注意路径的一致性

PRODUCT_COPY_FILES += \

$(LOCAL_PATH)/apk/app_newpad/bootanimation.zip:system/media/bootanimation.zip

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u011467537/article/details/51322655

智能推荐

rmd文件怎么转换html文件,提取.Rmd文件的html依赖项(包含htmlwidgets)-程序员宅基地

文章浏览阅读790次。题我怎样才能创建一个将.Rmd文件(包含htmlwidgets代码)作为输入的函数,并输出一个包含其JavaScript / CSS依赖项的html文件?具体来说,当渲染为html时,临时文件rmarkdown为pandoc的–include-in-header参数生成.细节示例 – myfile.Rmd:This is some text```{r}library(dygraphs)dygrap..._怎么把rmd保存为html

QT designer 如何快速查看效果_qt designer 怎样查看界面效果-程序员宅基地

文章浏览阅读793次。Ctrl+R_qt designer 怎样查看界面效果

华为AI盘古大模型研究框架(华为产业链深度系列研究)PPT_华为ai大模型产业链-程序员宅基地

文章浏览阅读494次,点赞9次,收藏9次。鲲鹏芯片:鲲鹏920作为低功耗、 高性能的Arm处理器, 为鲲鹏服务器主板及整机产品提供芯片支撑, 使鲲鹏生态发展壮大 的核心所在, 在此基础上, 华为进一步开启自主研发芯片, 为鲲鹏生态发展奠定坚实基础。:昇腾AI处理器作为基础, 通过模块、 标卡、 小站、 服务器等丰富的产品形态, 打造面向 “端、 边、 云 “的全栈解 决方案, 为整个昇腾AI产业的底层核心支撑。、行业应用:华为以行业聚合应用, 通过平台和生态双轮驱动, 形成行业应用矩阵, 为众多行业客户提供解决方案。历经多年的技术创新,_华为ai大模型产业链

兴业银行银企直联查转账手续费和退票流水(C#代码篇)_c# 对接银企直联-程序员宅基地

文章浏览阅读1.7k次。前几天写了在兴业银行的银企直联中,如何查询手续费和退票流水,但没有完整的代码展示,所以这里再完整的提供下查询相关的代码。封装代码不涉及任何外部业务,如果你也正在接入兴业银行,且使用的开发语言是NET,那么你完全可以发挥拿来主义,完全不需要你修改一行代码!首先为了在转账时将企业内部系统业务Id作为PURPOSE,我在这里定义了一个ICIBTransactionPurposeBuilder接口,该接..._c# 对接银企直联

JVM菜鸟进阶高手之路十(基础知识开场白)_jvm必备知识-程序员宅基地

文章浏览阅读4.8k次,点赞6次,收藏14次。最近没有什么实战,准备把JVM知识梳理一遍,先以开发人员的交流来谈谈jvm这块的知识以及重要性,依稀记得2、3年前用solr的时候老是经常oom,提到oom大家应该都不陌生,那个时候也并没有从根本仅仅oom,由于对jvm不熟悉,只是去百度,到处都是配置jvm参数的,那个时候啥不懂,直接粘贴,但是并没有解决问题,通过这个就告诉我们作为开发人员也需要对jvm很熟悉才行,问题来了,很多人会说我的代码并没_jvm必备知识

解决undefined reference to symbol ‘LZ4_decompress_safe‘问题_对‘lz4_decompress_safe’未定义的引用-程序员宅基地

文章浏览阅读2.6k次,点赞10次,收藏6次。文章目录问题描述解决方法参考资源问题描述make时碰到如下问题/usr/bin/ld: CMakeFiles/nearest_neighbors.dir/nearest_neighbors.cpp.o: undefined reference to symbol 'LZ4_decompress_safe'解决方法(不推荐)降低flann版本到1.7及以下(推荐)使用whereis liblz4.so找到对应的地址, 一般是/usr/lib/x86_64-linux-gnu/liblz4.s_对‘lz4_decompress_safe’未定义的引用

随便推点

srilm 阅读文档6_intervalheap-程序员宅基地

文章浏览阅读437次。IntervalHeap.h IntervalHeap.cc文档作者:jianzhu创立时间:08.08.30--------------------------------------1、基本类-------------------------------------- 这两个文件主要以模板方式定义了一个区间堆(IntervalHeap)。该区间堆是一个最大值堆和最小值堆的结合。通过在堆的每个节点

200 万年薪!西交大 2 位计算机博士入选华为天才少年-程序员宅基地

文章浏览阅读238次。点击上方“码农突围”,马上关注这里是码农充电第一站,回复“666”,获取一份专属大礼包真爱,请设置“星标”或点个“在看”转自 | 新智元编辑 | 桃子 拉燕2019年,华为发布全球招募令,计划在全世界招募20-30名华为天才少年。至今,已经有20位天才少年加入华为。近日,又有2名来自西安交通大学的博士成功入选。谁将有幸入选今年的华为天才少年呢?前几天,华为刚刚发布了新一...

Oracle select into,fetch into,returning into, bulk collect into limit, forall in 批量效率的读取游标数据 提高性能_fetch bulk collect into limit-程序员宅基地

文章浏览阅读2.3k次。博客园 | 首页 | 新随笔 | 联系 | 订阅 | 管理ORACLE FETCH BULK COLLECT INTO LIMITDECLARE TYPE rr IS REF CURSOR; TYPE r_emp IS RECORD( empno NUMBER(4), ename VARCHAR2(10), job VARCHAR..._fetch bulk collect into limit

SENET与 CBAM 注意力机制_如果把senet和cbam结合成为双重注意力机制,插入到backbone网络中,那么他的输出特-程序员宅基地

文章浏览阅读1.3k次,点赞2次,收藏13次。原文链接:https://blog.csdn.net/xu380393916/article/details/109304082一、SENETSENET是2017年的世界冠军,SE全称Squeeze-and-Excitation是一个模块,将现有的网络嵌入SE模块的话,那么该网络就是SENet,它几乎可以嵌入当前流行的任何网络,那么为什么会引出这个东西呢,来看下图:SE结构一个SEblock的过程分为 Squeeze(压缩) 和 Excitation(激发) 两个步骤:Squeeze(压缩) 通_如果把senet和cbam结合成为双重注意力机制,插入到backbone网络中,那么他的输出特

Android 9.0 TV版导入GMS组件以及Google Play_google play tv版-程序员宅基地

文章浏览阅读9.3k次,点赞2次,收藏17次。Android 9.0 TV版导入GMS组件以及Google Play一、Android P之后的差异参照phone版本整理出一版适合电视或者电视盒子相关GMS框架导入方法可查看GMS P Initial Release Notes 了解:1、P上增加了一些core app :AndroidPlatformServices、GoogleRestore、Device Health Services (Turbo)2、GoogleContacts is Non-privileged ,其实2_google play tv版

Windows的Mysql5.7安装及使用_window mysql5.7 区分大小写并安装-程序员宅基地

文章浏览阅读1k次。mysql5.7_window mysql5.7 区分大小写并安装

推荐文章

热门文章

相关标签