編輯:開發入門
編者按:本文為一位第一線的android開發者在經過三周學習Android收集整理的一份android 2.2開發初學者的入門培訓教程。文章深淺得當,對於剛剛學習android開發的朋友,這是一份非常好的教程。
一、環境配置和安裝(android 2.2)
1.1 JDK
1.2 SDK
1.3 Eclipse 3.5 (Galileo)
1.4 ADT 0.9.7
1.5 安裝
依次下載,按照文章步驟安裝即可,注意安裝SDK時,需要如下設置下:
不然更新不下來,那個鏈接地址被牆了。
二、android系統架構
2.1Linux內核(Linux Kernel)
◆ Android運行在linux kernel 2.6之上,但是把Linux內受GNU協議約束的部分做了取代,這樣在android的程序可以用於商業目的。
◆ Linux 內核是硬件和軟件層之間的抽象層。
2.2中間件
◆ 中間件包括兩部分:核心庫和運行時(librarIEs & android runtime)
◆ 核心庫包括,SurfaceManager 顯示系統管理庫,負責把2D或3D內容顯示到屏幕;Media Framework 媒體庫,負責支持圖像,支持多種視頻和音頻的錄制和回放;SQlite 數據庫,一個功能強大的輕量級嵌入式關系數據庫;WebKit 浏覽器引擎等。
◆ Dalvik虛擬機:區別於Java虛擬機的是,每一個android 應用程序都在它自己的進程中運行,都有一個屬於自己的Dalvik 虛擬機,這一點可以讓系統在運行時可以達到優化,程序間的影響大大降低。Dalvik虛擬機並非運行Java字節碼,而是運行自己的字節碼。
2.3應用程序框架(Application Framework)
◆ 豐富而又可擴展性的視圖(VIEws),可以用來構建應用程序, 它包括列表(lists),網格(grids), 文本框(text boxes),按鈕( buttons), 可嵌入的web 浏覽器。
◆ 內容提供者(Content Providers)使得應用程序可以訪問另一個應用程序的數據(如聯系人數據庫), 或者共享它們自己的數據。
◆ 資源管理器(Resource Manager)提供非代碼資源的訪問,如本地字符串,圖形,和布局文件( layoutfiles )。
◆ 通知管理器(Notification Manager) 使得應用程序可以在狀態欄中顯示自定義的提示信息。
◆ 活動管理器( Activity Manager) 用來管理應用程序生命周期並提供常用的導航回退功能。
2.4應用程序 (Applications)
◆ android 系統會內置一些應用程序包包括email 客戶端,SMS 短消息程序,日歷,地圖,浏覽器,聯系人管理程序等。所有的應用程序都是使用Java 語言編寫的。
三、android系統包說明
◆android.app :提供高層的程序模型、提供基本的運行環境
◆android.content :包含各種的對設備上的數據進行訪問和發布的類
◆android.database :通過內容提供者浏覽和操作數據庫
◆android.graphics :底層的圖形庫,包含畫布,顏色過濾,點,矩形,可以將他們直接繪制到屏幕上.
◆android.location :定位和相關服務的類
◆android.media :提供一些類管理多種音頻、視頻的媒體接口
◆android.net :提供幫助網絡訪問的類,超過通常的Java.Net.* 接口
◆android.os :提供了系統服務、消息傳輸、IPC 機制
◆android.opengl :提供OpenGL 的工具
◆android.provider :提供類訪問android 的內容提供者
◆android.telephony :提供與撥打電話相關的API 交互
◆android.vIEw :提供基礎的用戶界面接口框架
◆android.util :涉及工具性的方法,例如時間日期的操作
◆android.webkit :默認浏覽器操作接口
◆android.widget :包含各種UI 元素(大部分是可見的)在應用程序的屏幕中使用
四、android項目工程說明
◆src:存放Java源代碼。
◆gen:存放編譯器自動生成的Java代碼,這個目錄下的文件是系統自動維護的。
◆assets: 存放在這個目錄下的文件,無論是mp3還是圖片,都會被打包到發布包中。
◆res:資源文件目錄,添加到這個目錄下的文件都會在gen下的R.ava文件中顯示出來;如果res下存放的資源在應用中沒有使用到,那麼在gen下的R.Java的文件中就不會顯示,那麼打包的時候就不會將這部分資源打包,減少了應用的發布文件大小。
◆drawable:存放圖片文件,注意圖片名稱必須是[a-z0-9_.]組成;drawable目錄下不能分子級目錄,只能通過命名方法來加以區分。
◆layout:存放與UI相關的布局文件,都是XML文件。
◆raw:直接復制到設備中的任意文件,不會被編譯,可以放數據庫文件。
◆values: 存放字符串,顏色,數組等常量數據。可以任意命名,但是通常命名:color.xml、strings.xml、array.xml、styles.xml、dimens.XML(定義尺寸值:dimension value)
◆xml:任意的XML文件,在運行時可以通過調用Resources.getXML()讀取。
五、基本控件
5.1 文本框(TextView)、自動完成(AutoCompleteTextVIEw)
5.2 編輯框(EditText)
◆android:hint 內容為空時提醒的信息,如“請輸入”
5.3 下拉列表(Spinner)
◆android:entrIEs可以通過在strings.XML中指定string-array來設置選項。
5.4 進度條(ProgressBar)
5.5 拖動條(SeekBar)
5.6 評分條(RatingBar)
5.7 按鈕(Button)、圖片按鈕(ImageButton)
5.8 圖片框 (ImageVIEw)、畫廊(Gallery)
5.9 日期和時間(DatePicker、TimePicker)
5.10 單項選擇(RadioGroup、RadioButton)、多項選擇(CheckBox)
5.11 表格 (GridView)、列表(ListVIEw)
5.12 對話框(AlertDialog)、對話框中的進度條(ProgressDialog)
5.13 菜單(Menu)
5.14 提示(Toast)
類似於MessageBox,非模式窗口。如
六、布局和容器6.1幀布局(FrameLayout)
放入其中的所有元素都被放置最左上的區域,無法為這些元素指定一個確切的位置。如果有多個子元素,那麼後邊的子元素的顯示會重疊在前一個元素上。
6.2線性布局(LinearLayout)
常用布局,子元素按行或列依次排列。
◆android:layout_gravity是本元素對父元素的重力方向。
◆android:gravity是本元素所有子元素的重力方向。
6.3絕對布局(AbsoluteLayout)
可以讓子元素指定准確的x/y坐標值,(0, 0)為左上角,沒有頁邊框,允許元素之間互相重疊。
6.4相對布局(RelativeLayout)
允許子元素指定他們相對於其它元素或父元素的位置(通過ID指定)
6.5表格布局(TableLayout)
將子元素的位置分配到行(TableRow)中,注意不會顯示邊框線也不能夠跨行合並單元格。
例子
6.6選項卡(TabWidget)
七、常用代碼
7.1在當前Activity中啟動另外一個Activity
7.2從當前ContentVIEw從查找控件
R.id.btnAbout指控件id。
7.3獲取屏幕寬高
7.4無標題欄、全屏
注意在setContentVIEw()之前調用,否則無效。7.5注冊activity
所有用到的Activity都必須在androidManifest.XML中注冊,否則會報空指針錯誤。如:
,注意是包名+類名。
八、Adb命令行
8.1DOS進入android-sdk-Windows\tools目錄
8.2Linux
登錄Linux命令:adb shell
列出當前文件:ls
刪除文件:rm 文件名
8.3Sqlite
登錄sqlite命令:sqlite3
8.4Adb命令
列出當前有哪些活動的模擬器:adb devices
上傳文件:adb push
安裝apk文件:adb install android123.apk
九、Apk文件破解
9.1獲取apk的資源圖片
直接用 WinRAR打開,res/drawable直接拖拽出來即可。
9.2獲取XML文件信息
雖然能用WinRAR看到裡面的xml文件,但是XML是經過優化的,無法直接查看,需要使用apktool工具,下載地址。
下載apktool-1.3.1.tar.bz2和apktool-install-Windows-2.2_r01-2.tar.bz2解壓到同一個目錄,然後把待破解的apk文件拷貝到同一目錄,DOS進入該目錄,輸入:aapt d 91callinfo.apk 91callinfo,這裡第四個參數為破解完存放的路徑。
9.3反編譯dex獲取Java源代碼
Apktool工具只能反編譯成smali的中間代碼文件,這裡需要借助另外一個開源工具:dex2jar,下載地址。這個工具不能直接翻譯成Java文件,但是可以把dex文件轉換成jar文件,然後可以通過jad工具把jar文件反編譯成Java源文件,如果只是看看源碼的話可以用jd-gui,下載地址 。
dex文件(classes.dex)可以用WinRAR從apk文件中解壓出來。
十、小技巧
10.1 使用系統的圖標
例如調用系統打電話的圖標:
10.2 讓控件透明,如ImageButton
設置android:background="@null"
10.3 在layout中直接指定onclick方法
不用手動綁定,在layout中設置
methodName為對應Activity中的方法,如下格式:(適應1.6以上版本)
10.4 用PC鍵盤控制模擬器
10.5 進入界面就顯示/隱藏軟鍵盤
在androidManifest.XML中設置activity的
10.6 界面可視化布局工具
系統提供可視化布局並不好用,這裡推薦一款,布局完後點生成代碼即可:
10.7 在Eclipse中看android的源碼
將源代碼拷貝至android-sdk-Windows\platforms\android-4\sources下即可。注意源碼版本對應android-4文件夾,這裡指android1.6的源碼。
十一、疑難解答
Q:11.1 用模擬器調試頻繁連不上,或者報emulator-5554 disconnected的錯誤?
A:Window(窗口) -> Show Views(顯示視圖) -> device -> vIEw menu(視圖菜單)-> Reset adb
Q:11.2 匿名類中如何使用this?
A:classname(類名).this
Q:11.3 程序出錯後模擬器上僅顯示應用程序遇到問題將關閉怎麼辦?
A:可以從LogCat中檢查錯誤,默認LogCat在DDMS視圖中,可以通過以下方法調整到Java視圖與控制台並列顯示:點擊Eclipse左下角 ,點開後在其他裡面找到android目錄下的LogCat拖拽出來即可。
作為開發者,你的第一感覺是你拿到這個開發框架寫“Hello, World!”程序時的難易程度給你留下的。 當然,在android裡,這個非常容易,下面我給你演
在android的源代碼中,經常會看到形如:sp<xxx>、wp<xxx>這樣的類型定義,這其實是android中的智能指針。智能指針是C++中
先決條件在本文中,我們將創建一個在 Android 設備上運行的移動應用程序。您將需要安裝 android SDK;本文使用 V1.5 SDK。應用程序代碼將用 Sca
簡介: 這個兩部分文章系列探索了在 android 平台上處理 Internet 上兩種最常見的數據格式 — XML 和 JavaScript Object