1. 程式人生 > >Android定製:修改開機啟動畫面

Android定製:修改開機啟動畫面

引言

Android系統在按下開機鍵之後就會進入啟動流程,這個過程本身需要一些時間,而面向使用者的往往是廠商定製的一些宣傳用的比較絢麗的啟動畫面。我們在定製自己的系統時,往往需要把這些畫面換成我們自己的,一方面可以新增自己的LOGO增加品牌曝光度,另外也可以新增一些特效讓使用者嚐嚐鮮。

原始碼:非官方Android5.1原始碼

描述

籠統來說,目前android開機畫面由三個部分(階段)組成,第一部分在bootloader啟動時顯示(靜態),第二部分在啟動kernel時顯示(靜態),第三部分在系統啟動時(bootanimation)顯示(動畫)。

1、第一個開機畫面:
Bootloader啟動Linux核心時的啟動畫面(Linux小企鵝的畫面)。
在預設情況下,這個畫面是不會出現的(Android 1.5及以上版本已經取消載入圖片),除非我們在編譯核心的時候,啟用以下兩個編譯選項:
CONFIG_FRAMEBUFFER_CONSOLE、CONFIG_LOGO
第一個編譯選項表示核心支援幀緩衝區控制檯,它對應的配置選單項為:
Device Drivers —> Graphics support —> Console display driver support —> Framebuffer Console support。
第二個編譯選項表示核心在啟動的過程中,需要顯示LOGO,它對應的配置選單項為:
Device Drivers —> Graphics support —> Bootup logo。

如有興趣可以檢視核心原始碼:
<source>/kernel/goldfish/drivers/video/
<source>/kernel/goldfish/drivers/video/logo/
...

2、第二個開機畫面:
Android系統 init 程序啟動過程中的畫面。
第二個開機畫面的內容是由檔案 initlogo.rle 來指定的,如果檔案 initlogo.rle 檔案不存在,或者在顯示它的過程中出現異常,那麼 Android 就以文字的方式來顯示第二個開機畫面,即向編號為0的控制檯(/dev/tty0)輸出“ANDROID”這7個字元。

如有興趣可以檢視系統原始碼:
<source>/system/core/init/


<source>/system/core/init/init.c
<source>/system/core/init/logo.c
...

3、第三個開機畫面:
應用程式 bootanimation 顯示的動畫。
bootanimation 程式會檢查系統制定目錄下是否存在動畫檔案(.zip檔案),如果不存在,則顯示的第三個開機畫面是Android系統預設的開機動畫(明暗閃爍的 Android Logo),否則的話,第三個開機畫面就是由使用者自定義的開機動畫。

如有興趣可以檢視系統原始碼:
<source>/frameworks/base/cmds/bootanimation/

方法

我們在定製過程中根據實際需要修改,對於開機啟動畫面,我們主要修改的是第三個畫面(動畫)。

1、修改預設的開機畫面
Android系統預設的開機動畫是由兩張圖片android-logo-mask.pngandroid-logo-shine.png通過程式呼叫實現的動畫效果(明暗變化)。
這兩張圖片儲存在<android-source>/frameworks/base/core/res/assets/images中。

簡單替換的方法就是自定義png圖片,替換 android-logo-mask.png檔案,並重新編譯:

$ mmm -B frameworks/base/core/res/

會生成新的<android-source>/out/target/product/xxx/system/framework/framework-res.apk檔案,替換的圖片就在其中。

2、使用自定義的開機動畫
系統原始碼中有關開機動畫的檔案定義了兩個巨集:

#define USER_BOOTANIMATION_FILE "/data/local/bootanimation.zip" 
#define SYSTEM_BOOTANIMATION_FILE "/system/media/bootanimation.zip"

因此我們只要製作名為bootanimation.zip的動畫檔案,並放到上面其中之一的目錄下就好了。
具體操作如下:
(1) 製作bootanimation.zip動畫包
1> 準備png圖片(大量圖片輪播成為動畫效果)
2> 編寫動畫描述檔案 desc.txt,內容格式如下:
第一行的三個數字分別表示開機動畫在螢幕中的顯示寬度、高度以及幀速(fps)。
剩餘的每一行都用來描述一個動畫片斷,這些行必須要以字元“p”來開頭,後面緊跟著兩個數字以及一個檔案目錄路徑名稱。
第一個數字表示一個片斷的迴圈顯示次數,如果它的值等於0,那麼就表示無限迴圈地顯示該動畫片斷。
第二個數字表示每一個片斷在兩次迴圈顯示之間的時間間隔,這個時間間隔是以一個幀的時間為單位的。
檔案目錄下面儲存的是一系列png檔案,這些png檔案會被依次顯示在螢幕中。

舉例說明:

600 480 24          // 開機動畫大小為寬600 高 480,動畫的顯示速度為24幀每秒。
p   1   0   part1   // part1目錄下png圖片顯示一次,迴圈間隔為0幀時間。
p   0   10  part2   // part2目錄下png圖片無限迴圈,迴圈間隔為10幀時間。

(2) 把做好的動畫包放入指定目錄

$ cp bootanimation.zip <source>/out/target/product/xxx/system/media/

(3) 重新生成 system.img 映象

後記

不同廠商提供的原始碼可能有所不同,修改的時候根據實際情況修改。

相關推薦

[Android]自定義開機動畫實踐 Android定製修改開機啟動畫面

關於開機動畫的修改,可以參考 Android定製:修改開機啟動畫面 開機動畫主要是載入圖片,就像動畫片一樣。 在製作bootanimation.zip檔案的時候,需要注意 應該採用“儲存”(store)的方式去打包,不然系統會識別不了圖片資源 下面是一個動畫修改測試,我們也

Android定製修改開機啟動畫面

引言 Android系統在按下開機鍵之後就會進入啟動流程,這個過程本身需要一些時間,而面向使用者的往往是廠商定製的一些宣傳用的比較絢麗的啟動畫面。我們在定製自己的系統時,往往需要把這些畫面換成我們自己的,一方面可以新增自己的LOGO增加品牌曝光度,另外也可以新

Android新增開機啟動自定義指令碼

新增開機啟動自定義指令碼 之前也一直做過類似的事情,但是沒有記錄,這裡做個簡單記錄,我這裡的例子是在Android7.1.2中實現的,用的板子是參考Quectel-SC60(基於高通平臺的64位SoC:msm8953)設計的,之前做的也有其他平臺的,但都大同小異(可能

Android添加全屏啟動畫面

全屏 quest ray class max-width pub title nbsp hello 有的Android軟件需要在啟動的時候顯示一個啟動畫面,可以是一張圖或者一些設置什麽呢,還有一個好處就是,可以趁機在後臺加載數據。創建啟動畫面一般有兩種方式:1、建立一個ac

企業案例系統開機啟動項優化 除了下面5個服務以外都關閉 crond   sshd     network rsyslog sysstat

企業案例:系統開機啟動項優化 除了下面5個服務以外都關閉 crond sshd network rsyslog sysstat第一步:把要執行命令的樣子顯示出來[[email protected]/* */ ~]# chkconfig|egrep "sshd|crond|rsys

Linux修改開機啟動logo

stand 重新 沒有 extern c 修改 onf png line height 默認開機LOGO會在液晶屏的左上腳顯示一只小企鵝,分辨率為80*80,具體在kernel/drivers/video/logo下會有logo_linux_clut224.ppm這幅圖像,

Android UsageStats應用根據啟動次數、啟動時間、應用名稱排序

public each eno you when listen iss 技術 internal Android 7.1.1 developers/samples/android/system/AppUsageStatistics/Application/src/main/j

AOC 電視機T3212M 進入 工廠模式方法,修改開機啟動方式

希望 menu tin 開機啟動 選擇 power 電視機 ngs nbsp 原啟動方式: 通電,再按遙控 器上 “開機” 希望改成: 通電直接打開電視 方法: 1、 按遙控器上的 menu 1147 進入 工廠模式 2、 選擇

Android LauncherActivity的啟動過程

本文轉載自凶殘的程式設計師的部落格 [Android Launcher 啟動 Activity 的工作過程]https://blog.csdn.net/qian520ao/article/details/78156214 本來想寫一篇關於Activity的啟動過程的部

Android開發修改button的邊框和點選改變背景

本文內容 講解如何修改button的邊框,點選button改變背景顏色 開啟在res/values目錄下的color.xml檔案,新增程式碼: <!-- 綠色 --> <color name="green">#008000</color>

修改Windows7啟動畫面與登入畫面

Windows7進入桌面前,要經過兩次畫面切換,首先是啟動畫面,其次是登入畫面。這兩個畫面可以通過特殊處理修改。 一、修改啟動畫面 方式1: 如果只需要變成全黑,不顯示任何動畫與文字,可以禁用啟動畫面,如下: 按win+R(執行)→msconfig→引導→勾選“無

設定自己的linux開機啟動畫面

先來給大家展示一下我的,開機及登入介面: 其中紅色框部分,在我們預設的開機介面中是沒有的哦,這就是本文要介紹的,新增的部分。 通過下邊的步驟,你可以自由畫屬於你自己的畫面,還可以多顯示一些關於本機資訊。 現在開始吧: 1.當我們開機的時候,會顯示一些字串 那

[Android]Tablayout修改指示器indicator的寬度

一、問題描述: 最近接觸到了Tablayout,需求是要把Tablayout的下劃線寬度縮短,或者說使其可以進行自定寬度。 百度上面大多數利用反射,(具體可百度查詢),這種方法確實可以把下劃線變短,但是同時也會縮短Tab的點選區域,並且過於短後會影響Tab上TextView的UI顯示效果

Ubuntu 16.04LTS修改開機啟動

裝上Ubuntu16.04後,每次開機都得手選開機項,挺麻煩 sudo vi /etc/default/grub GRUB_DEFAULT=0 GRUB_HIDDEN_TIMEOUT=0 GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TIMEOUT

Ubuntu16.04與windows10雙系統修改開機啟動項順序

        在windows下直接安裝ubuntu的話,預設的grub啟動順序是直接進入ubuntu,但是我暫時還是經常用windows,所以便有了修改啟動順序的想法,以後可以直接進入windows。 這裡我總結了一下網上最簡單的方法,直接在獲取系統root許可權的情況

Android-如何設定APP開機啟動(圖文)

方案:第一步:接收“開機完成”廣播:android.intent.action.BOOT_COMPLETED;第二步:在廣播接收器中啟動HelloApp:AndroidManifest.xml:<?xml version="1.0" encoding="utf-8"?&

Android定製去掉USB許可權彈窗

引言 當我們在訪問一個插入到Android系統的USB裝置的時候往往是需要許可權的,此時系統會彈出詢問許可權的對話方塊,而我們此時希望讓它預設允許訪問USB裝置並且不希望使用者看到這個對話方塊。 原始碼:非官方Android5.1原始碼 描述 我們在獲取

Android 8.0 新增開機啟動指令碼

[ 10.368517] type=1400 audit(1483292256.112:14): avc: denied { execute_no_trans } for pid=2768 comm="prepare_ds.sh" path="/vendor/bin/toybox_vendor" dev=

設定linux開發板開機啟動畫面

1,make ARCH=arm menuconfig   Device Drivers  --->    Graphics support  --->   重新編譯核心,然後下載到開發板,就可以看到啟動的時候有小企鵝了.

改動Android啟動畫面

動畫 post local suffix med 根目錄 虛擬 framework thread 一.Android的啟動步驟 1.啟動Linux 2.載入Android 3.顯示Android桌面 二.分析 Android載入