文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Android的Launcher研究:客製化桌面UI

Android的Launcher研究:客製化桌面UI

时间:2010-10-19  来源:landuochong

能取得Android OS原始碼,並修改裡頭的內容,有時候也頗有樂趣。最近和幾位朋友聊到「Android框架的改造」,以及如何吸引對Android框架技術有興趣的同好 一起交流的議題;我個人認為,一開始如果能丟出一個比較有樂趣的議題,或許可以有拋磚引玉的效果。

上週在北京進行Android培訓課程時,與eoeAndroid社群也進行了想法的交流,由於大家都體認到Android底層技術的重要性及其價 值,而且eoeAndroid社群裡也有許多技術好手,所以就和eoeAndroid的創辦人靳岩兄有了一個共同主持研究Android底層技術「同好小 組」的想法,希望能透過社群的方式,集合大家的智慧,一起把底層技術研究清楚。

因為要讓大家能有焦點,所以「發題」很重要,這個工作就由落在我身上了。由於第一次希望題目能簡單,並且有趣一點,至少要能達到發球的效果,吸引大 家開始關心Android底層技術,所以原則是:希望能用最簡單的方式、讓大家體驗修改底層的樂趣。

題目說明: Launcher

第一次的題目是「Launcher」的修改。

Launcher就是Android的應用程式啟動器,Launcher的功能還包含:桌面的切換、應用程式快捷(shortcut)功能、背景圖 (Wallpaper)功能等等。因此,修改Launcher可以改變一些很深層的UI功能。

在Android的桌面最下方,有一個圖示,按下後可以拉出應用程式圖示清單,這是Launcher提供的功能。這一次,因為我們覺得這個 Launcher的圖示太製式化了,越看越不好看,所以想要修改一下,換張圖,要怎麼做到呢?

範例展示

例如,圖1是原始的圖示;圖2是修改後的圖示。


圖1: 原始圖示


圖2: 幫Launcher妝扮一下

實作說明 1/4: 取得Android原始碼與EeePC移植

這個功能並不難做,事實上,完全不用寫程式。只要把圖檔重做就可以了。只不過前提是,要知道:

1. 如何取得Android OS原始程式碼
2. 如何編譯Android OS

最簡單的做法是:

1. 下載Android原始碼後、取得EeePC的移植(product)
2. 編譯「TARGET_PRODUCT」為eee_701
3. 由於Launcher都是用Java語法寫成的,所以不會有架構(ARM/x86/...)的問題,編譯後可以取得Launcher.apk;APK套件 是不分處理器平臺的

先學會如何由Android原始碼編譯出eee_701的image,才有辦法繼續進行。

實作說明 2/4: 修改圖檔

在Android原始碼的 packages/apps/ 目錄裡,存放了Android內建的應用程式原始碼,Launcher是Android的一個應用程式,所以從這裡找到它的原始碼,並進行修改工程。

切換到以下目錄:

<android source>/packages/apps/Launcher/

接著要修改src/目錄下的內容,還是res/目錄下的內容呢?圖檔屬於Android的「resource」,因此當然是到res/目錄下找到我 們要的圖檔。

切換到以下目錄:

<android source>/packages/apps/Launcher/res/

又看到了一大堆目錄,圖檔的部份存放於:

  • drawable-land/ - landscope 模式的圖檔
  • drawable-port/ - portrait 模式的圖檔

我們先改一下portrait模式的圖檔。找到drawable-port/tray_handle_normal.png檔案如下:

就是它了,換掉,把圖檔換成這個:

換好後重編Android即可。一行程式都不用改。

實作說明 3/4: 安裝Launcher.apk

重編Android原始碼,接著可以在out/target/product/<product name>/system/app/找到Launcher.apk套件。把Launcher.apk安裝到AVD(Android 模擬器)裡做測試,方法如下:

1. 先啟動一個AVD
2. 執行adb將Launcher.apk手動安裝到AVD裡,指令如下:

$ adb install -r <your-path>/Launcher.apk

成功後可看到以下畫面:

338 KB/s (837376 bytes in 2.417s)
pkg: /data/local/tmp/Launcher.apk
Success

實作說明 4/4: 重開機

已經完成了,直接重開即可。「重開」是把AVD重新啟動,不是把電腦重新開機 ;-)

應用與討論

歡迎大家上傳你的作品、或是貼圖與大家分享,方式是透過eoeAndroid社群的討論區:

http://www.eoeandroid.com/forumdisplay.php?fid=54

如果有更詳細的Launcher研究心得,或是希望能針對Launcher進行討論,歡迎至eoeAndroid的討論區發文。

--jollen

引用通 告

如果您想引用這篇文章到您的Blog,
請複製下面的鏈接,並放置到您發表文章的相 應界面中。

http://www.jollen.org/cgi-bin/mt3/mt-tb.cgi/656

評論 (1)

UMEC:

3. 由於Launcher都是用Java語法寫成的,所以不會有架構(ARM/x86/...)的問題,編譯後可以取得Launcher.apk;APK套件 是不分處理器平臺的

以上這句話有點問題!雖然apk是不分處理器平臺的,但是Launcher.apk卻比較特別,因為它和framework裡的core核心程式有 API相容性的問題,所以這個launcher.apk不見得可以放在不同的平台裡,以上是小小的心得^^

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载