一、文字圖檔轉換
png 圖檔生成源碼:
development/tools/recovery_l10n/
recovery_l10n 在 o上已經沒有源碼了,需要從kk上移植過來
原生的源代碼有個bug,導緻讀取出來的Locale[]數組值全部為空,無法完成圖檔的制作。
diff --git a/tools/recovery_l10n/src/com/android/recovery_l10n/Main.java b/tools/recovery_l10n/src/com/android/recovery_l10n/Main.java
index 3f2bebe..5da5592 100755
--- a/tools/recovery_l10n/src/com/android/recovery_l10n/Main.java
+++ b/tools/recovery_l10n/src/com/android/recovery_l10n/Main.java
@@ -150,7 +150,7 @@ public class Main extends Activity {
Arrays.sort(localeNames);
ArrayList<Locale> locales = new ArrayList<Locale>();
for (String ln : localeNames) {
- int u = ln.indexOf('_');
+ int u = ln.indexOf('-');
if (u >= 0) {
Log.i(TAG, "locale = " + ln);
locales.add(new Locale(ln.substring(0, u), ln.substring(u+1)));
1、
res\values-zh-rCN\strings.xml
用于顯示中文文字,可以修改裡面的中文文字為您所需要的。
2、
res\layout\main.xml
用于改變文字格式,如大小、字型等。
3、然後使用mm編譯出
out\target\product…\system\app\RecoveryLocalizer.apk
4、安裝打開後選擇需要的文字圖檔後點選go按鈕。
5、取出圖檔:
adb pull data/data/com.android.recovery_l10n/files/text-out.png
6、生成的圖檔還不能直接替換系統圖檔,需要在Ubuntu環境下作進一步處理
(如未安裝 pngcrush,請先安裝 :
sudo apt-get install pngcrush
)
pngcrush -c 0 text-out.png output.png
二、android5.1 logo動畫
android5.1的logo動畫是單張多幀PNG圖檔
1、安裝python、pip、PIL 圖形庫
2、python interlace-frames.py .\src1.png .\src2.png .\src3.png .\src4.png .\src5.png .\src6.png .\src7.png .\src8.png .\dst.png
三、android8.1 logo動畫
android8.1的logo動畫是多張8位深度png的圖檔
用 imagemagick 工具的 convert 指令轉換 sudo apt-get install imagemagick
//convert src.png -colorspace gray dst.png
convert image.png -define png:color-type=2 result.png
bit_depth(8)channels(3)color_type(2)
// 批量轉換圖檔的腳本
#!/bin/bash
# get all filename in specified path
path=$1
files=$(ls $path)
for filename in `find . -name "*.png"`;
do
echo "convert"$filename
convert $filename -define png:color-type=2 $filename
done
檢視png圖檔資訊
sudo apt-get install pngtools
pnginfo bootable/recovery/res-mdpi/images/error_text.png
顯示結果如下:
error_text.png...
Image Width: 163 Image Length: 2582
Bitdepth (Bits/Sample): 8
Channels (Samples/Pixel): 1
Pixel depth (Pixel Depth): 8
Colour Type (Photometric Interpretation): GRAYSCALE
Image filter: Single row per byte filter
Interlacing: No interlacing
Compression Scheme: Deflate method 8, 32k window
Resolution: 0, 0 (unit unknown)
FillOrder: msb-to-lsb
Byte Order: Network (Big Endian)
Number of text strings: 0
使用 convert 指令轉換之後檢視圖檔資訊顯示結果如下:
error_text.png...
Image Width: 163 Image Length: 2582
Bitdepth (Bits/Sample): 8
Channels (Samples/Pixel): 3
Pixel depth (Pixel Depth): 24
Colour Type (Photometric Interpretation): RGB
Image filter: Single row per byte filter
Interlacing: No interlacing
Compression Scheme: Deflate method 8, 32k window
Resolution: 0, 0 (unit unknown)
FillOrder: msb-to-lsb
Byte Order: Network (Big Endian)
Number of text strings: 0
轉換之後的 channels 和 pixel depth 和 Colour Type 都已經發生了變化