編輯:Android開發教程
Android操作系統本身就是一個巨大的開源軟件倉庫,熟悉它既可以了解到Android系統的設計框架,也可以獲得高效的應用程序編寫方式。本文所分析的源碼來自於Google官方的AOSP源碼4.0.1_r1,手機的Android版本是CM 4.2.2。對於Android系統分析而言,手機的操作系統版本和源碼版本有些不一致的地方不會有太大的影響,但是如果需要將源碼中的修改安裝到手機裡面的話,最不容易遇到問題的辦法就是保持手機中系統的版本和源碼的版本完全一致了。
1.程序入口發現
每一個應用程序都應當有各自的入口,使用JAVA編寫的Android應用程序也不例外。確認應用的入口是確認應用在系統中對應源碼的第一步,也是應用程序分析的第一步。我采用的辦法是將需要分析的短信app運行起來,通過Android自帶工具獲取當前占據主界面的activity名稱。
Stackoverflow中的回答http://stackoverflow.com/questions/13193592/adb-android-getting-the-name-of-the-current-activity給出了這個問題的三種解決辦法:
1)打Hierarchy View(Window->Open Perspective->Other->Hierarchy View),在Windows欄中用粗體顯示了當前占據屏幕activity和package,如下圖所示。其中com.android.mms是應用的包名,com.adnroid.mms.ui.ConversationList是具體的Activity名稱。
2)也可以直接打開Windows欄進行查看。(Window->Show View->Others->Windows),結果和上圖一致。
3) 使用dumpsys命令:adb shell "dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'" ,結果如下:
dumpsys使用方法見:http://stackoverflow.com/questions/11201659/whats-android-adb-shell-dumpsys-tool-and-its-benefits
2.程序功能分析
確定了短信app的報名以及主Activity之後,可以通過軟件搜索(這裡用的是everything)確定短信app在源碼中的位置是 packages\apps\Mms\src\com\android\mms\ui,並且短信app的啟動activity就是繼承自ListActivity的ConversationList。
1)ActionBar的構造
在onCreateOptionsMenu函數中通過導入conversation_list_menu加載menu項目。
public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.conversation_list_menu, menu);
conversation_list_menu.xml中設置了:發送、搜索、設置、刪除所有等5個按鈕。
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/action_compose_new" android:title="@string/new_message" android:icon="@drawable/ic_menu_msg_compose_holo_dark" android:showAsAction="always|withText" /> <item android:id="@+id/search" android:title="@string/menu_search" android:icon="@drawable/ic_menu_search_holo_dark" android:showAsAction="ifRoom|collapseActionView" android:actionViewClass="android.widget.SearchView" /> <item android:id="@+id/action_settings" android:title="@string/menu_preferences" android:icon="@android:drawable/ic_menu_preferences" /> <item android:id="@+id/action_delete_all" android:title="@string/menu_delete_all" android:icon="@drawable/ic_menu_trash_holo_dark" /> <item android:id="@+id/action_debug_dump" android:title="@string/menu_debug_dump" /> </menu>
不得不承認,這是個高效率的時代!從刷機精靈微博了解到,上周五,Google發布了Android4.4的源碼,這不,剛過了一天,Nexus 4機型的4.4 ROM就已經率先
Save & Restore State與之前的例子Android ApiDemo示例解析(9):App->Activity->Persistent
前言網上ListView上下拖動的例子有,效果也很好,但是項目要橫著拖的,只要硬著頭皮自己寫(主要是沒找到合適的),參考文章1修改而來,分享一下。截圖代碼javapubl
一、“點九”是andriod平台的應用軟件開發裡的一種特殊的圖片形式,文件擴展名為:.9.png智能手機中有自動橫屏的功能,同一幅界面會在隨著手機