http://www.cnblogs.com/over140/archive/2010/09/27/1836567.htmlphp
前言html
這是前段時間用於公司Android入門培訓的資料,學習Android三週時間收集整理的,時間倉促,但願能對像我這樣還沒入門就直接上項目的人一點幫助 :)java
聲明linux
歡迎轉載,但請保留文章原始出處:) android
博客園:http://www.cnblogs.comgit
農民伯伯: http://www.cnblogs.com/over140/web
正文sql
1、 環境配置和安裝(Android2.2)shell
參考文章:這裏數據庫
1.1 JDK
1.2 SDK
下載地址:http://dl.google.com/android/android-sdk_r06-windows.zip
1.3 Eclipse 3.5 (Galileo)
下載地址:
1.4 ADT 0.9.7
下載地址:http://dl.google.com/android/ADT-0.9.7.zip
1.5 安裝
依次下載,按照文章步驟安裝便可,注意安裝SDK時,須要以下設置下:
否則更新不下來,那個連接地址被牆了。
2、 Android系統架構
2.1 Linux內核(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 語言編寫的。
3、 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 元素(大部分是可見的)在應用程序的屏幕中使用
4、 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()讀取。
參見http://www.inandroid.cn/bbs/thread-1401-1-1.html 。
5、 基本控件
5.1 文本框(TextView)、自動完成(AutoCompleteTextView)
自動完成的效果和代碼:http://android.yaohuiji.com/archives/390
AutoCompleteTextView :
5.2 編輯框(EditText)
android:hint 內容爲空時提醒的信息,如「請輸入」
5.3 下拉列表(Spinner)
android:entries 能夠經過在strings.xml中指定string-array來設置選項。
5.4 進度條(ProgressBar)
效果和代碼:http://www.eoeandroid.com/viewthread.php?tid=1081
5.5 拖動條(SeekBar)
5.6 評分條(RatingBar)
5.7 按鈕(Button)、圖片按鈕(ImageButton)
Button:
ImageButton:
5.8 圖片框 (ImageView)、畫廊(Gallery)
ImageView
Gallery
畫廊效果:http://android.yaohuiji.com/archives/565
5.9 日期和時間(DatePicker、TimePicker)
AnalogClock
DigitalClock
Chronometer(計時器)
DatePicker
DatePickerDialog
TimePicker
TimePickerDialog
5.10 單項選擇(RadioGroup、RadioButton)、多項選擇(CheckBox)
CheckBox
RadioButton
ToggleButton
5.11 表格 (GridView)、列表(ListView)
GridView
ListView
GridView:http://blog.csdn.net/hellogv/archive/2009/09/18/4567095.aspx
ListView:http://www.cnblogs.com/allin/archive/2010/05/11/1732200.html
5.12 對話框(AlertDialog)、對話框中的進度條(ProgressDialog)
AlertDialog
AlertDialog:http://android.yaohuiji.com/archives/655
ProgressDialog:http://aina-hk55hk.javaeye.com/blog/679134
5.13 菜單(Menu)
5.14 提示(Toast)
相似於MessageBox,非模式窗口。如:
Toast.makeText(this, "信息", Toast.LENGTH_SHORT).show();
5.15 GestureOverLayView
5.16 HorizontalScrollView
5.17 MapView
5.18 VideoView
5.19 WebView
5.20 ZoomControls
6、 佈局和容器
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)中,注意不會顯示邊框線也不可以跨行合併單元格。
例子:http://hi.baidu.com/hoyah/blog/item/d9db34275d6f361a8b82a171.html
6.6 選項卡(TabWidget)
例子:http://fatkun.com/2010/06/android-tabwidget.html
7、 經常使用代碼
7.1 在當前Activity中啓動另一個Activity
startActivity(new Intent(this,目標Activity.class));
7.2 從當前ContentView從查找控件
(Button)findViewById(R.id.btnAbout)
R.id.btnAbout指控件id。
7.3 獲取屏幕寬高
DisplayMetrics dm = new DisplayMetrics();
//獲取窗口屬性
getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenWidth = dm.widthPixels;//320
int screenHeight = dm.heightPixels;//480
7.4 無標題欄、全屏
//無標題欄
requestWindowFeature(Window.FEATURE_NO_TITLE);
//全屏模式
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
注意在setContentView()以前調用,不然無效。
7.5 註冊activity
全部用到的Activity都必須在AndroidManifest.xml中註冊,不然會報空指針錯誤。如:<activity android:name="com.common.TestView"> ,注意是包名+類名。
8、 Adb命令行
8.1 DOS進入android-sdk-windows\tools目錄
8.2 Linux
登陸linux命令:adb shell
列出當前文件:ls
刪除文件:rm 文件名
8.3 Sqlite
登陸sqlite命令:sqlite3
8.4 Adb命令
列出當前有哪些活動的模擬器:adb devices
上傳文件:adb push
安裝apk文件:adb install android123.apk
9、 Apk文件破解
9.1 獲取apk的資源圖片
直接用 WinRAR打開,res/drawable直接拖拽出來便可。
9.2 獲取xml文件信息
雖然能用WinRAR看到裏面的xml文件,可是xml是通過優化的,沒法直接查看,須要使用apktool工具,下載地址:https://code.google.com/p/android-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,下載地址:http://code.google.com/p/dex2jar/。這個工具不能直接翻譯成java文件,可是能夠把dex文件轉換成jar文件,而後能夠經過jad工具把jar文件反編譯成Java源文件,若是隻是看看源碼的話能夠用jd-gui,下載地址:
http://java.decompiler.free.fr/jd-gui/downloads/jd-gui-0.3.3.windows.zip 。
dex文件(classes.dex)能夠用WinRAR從apk文件中解壓出來。
10、 小技巧
10.1 使用系統的圖標
例如調用系統打電話的圖標:
<ImageView android:src="@android:drawable/ic_menu_call"
圖標名稱和效果(Android1.5和1.6):
http://since2006.com/android/1.5-drawables.php
http://since2006.com/android/1.6-drawables.php
10.2 讓控件透明,如ImageButton
設置android:background="@null"
10.3 在layout中直接指定onclick方法
不用手動綁定,在layout中設置android:onClick=」methodName」,methodName爲對應Activity中的方法,以下格式:public void methodName(View view){} (適應1.6以上版本)
10.4 用PC鍵盤控制模擬器
PC鍵盤 |
模擬器按鍵 |
說明 |
Home |
Home |
主頁 |
F2 |
Menu |
菜單 |
Esc |
Back |
後退 |
F3 |
Call |
打電話 |
F4 |
Hangup |
掛斷 |
F5 |
Search |
搜索 |
Ctrl+F12 |
|
橫豎屏切換 |
10.5 進入界面就顯示/隱藏軟鍵盤
在AndroidManifest.xml中設置activity的
android:windowSoftInputMode="stateHidden"
10.6 界面可視化佈局工具
系統提供可視化佈局並很差用,這裏推薦一款,佈局完後點生成代碼便可:
DroidDraw:http://www.droiddraw.org/
10.7 在Eclipse中看Android的源碼
將源代碼拷貝至android-sdk-windows\platforms\android-4\sources下便可。注意源碼版本對應android-4文件夾,這裏指Android1.6的源碼。
11、 Q & A
11.1 用模擬器調試頻繁連不上,或者報emulator-5554 disconnected的錯誤?
Window(窗口) -> Show Views(顯示視圖) -> device -> view menu(視圖菜單)
-> Reset adb
11.2 匿名類中如何使用this?
classname(類名).this
11.3 程序出錯後模擬器上僅顯示應用程序遇到問題將關閉怎麼辦?
能夠從LogCat中檢查錯誤,默認LogCat在DDMS視圖中,能夠經過如下方法調整到Java視圖與控制檯並列顯示:點擊Eclipse左下角 ,點開後在其餘裏面找到Android目錄下的LogCat拖拽出來便可。
12、後期維護
12.1 2010-10-1
補充了許多控件的截圖,導出PDF下載: http://download.csdn.net/source/2729442
12.2 2010-10-18
補充了GestureOverLayView的文章連接,文章1是英語的,文章2爲中文的。
結束
資料均來自網絡,感謝這些人的分享~~