Android2.2快速入門

atgoingguoat發表於2014-02-20


 

前言

  這是前段時間用於公司Android入門培訓的資料,學習Android三週時間收集整理的,時間倉促,希望能對像我這樣還沒入門就直接上專案的人一點幫助  :)

 

宣告

  歡迎轉載,但請保留文章原始出處:) 

    部落格園:http://www.cnblogs.com

    農民伯伯: http://www.cnblogs.com/over140/


正文

  一、             環境配置和安裝(Android2.2

  參考文章:這裡

  1.1     JDK

  1.2     SDK

  下載地址:http://dl.google.com/android/android-sdk_r06-windows.zip

  1.3     Eclipse 3.5 (Galileo)

  下載地址:

  http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo/R/eclipse-java-galileo-win32.zip

  1.4     ADT 0.9.7

  下載地址:http://dl.google.com/android/ADT-0.9.7.zip

  1.5     安裝

  依次下載,按照文章步驟安裝即可,注意安裝SDK時,需要如下設定下:

       

  不然更新不下來,那個連結地址被牆了。

 

  二、             Android系統架構

   

    2.1   Linux核心(Linux Kernel)

    * Android執行在linux kernel 2.6之上,但是把linux內受GNU協議約束的部分做了取代,這樣在Android的程式可以用於商業目的。

    * Linux 核心是硬體和軟體層之間的抽象層。  

    2.2中介軟體

    * 中介軟體包括兩部分:核心庫和執行時(libraries & Android runtime)

    * 核心庫包括,SurfaceManager 顯示系統管理庫,負責把2D3D內容顯示到螢幕;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.xmlstrings.xmlarray.xmlstyles.xmldimens.xml(定義尺寸值:dimension value)

  xml       任意的XML檔案,在執行時可以通過呼叫Resources.getXML()讀取。

 

  參見http://www.inandroid.cn/bbs/thread-1401-1-1.html 

 

  五、             基本控制元件

  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     日期和時間(DatePickerTimePicker)

      AnalogClock

      DigitalClock

      Chronometer(計時器)

      DatePicker

      DatePickerDialog

      TimePicker

      TimePickerDialog

  5.10 單項選擇(RadioGroupRadioButton)、多項選擇(CheckBox)

      CheckBox

      RadioButton

      ToggleButton

  5.11 表格 (GridView)、列表(ListView)

      GridView

      ListView

  GridViewhttp://blog.csdn.net/hellogv/archive/2009/09/18/4567095.aspx

  ListViewhttp://www.cnblogs.com/allin/archive/2010/05/11/1732200.html

  5.12 對話方塊(AlertDialog)、對話方塊中的進度條(ProgressDialog)

      AlertDialog

  AlertDialoghttp://android.yaohuiji.com/archives/655

  ProgressDialoghttp://aina-hk55hk.javaeye.com/blog/679134

  5.13 選單(Menu)

  5.14 提示(Toast)

  類似於MessageBox,非模式視窗。如:

  Toast.makeText(this, "資訊", Toast.LENGTH_SHORT).show();

  5.15 GestureOverLayView

      

      文章1文章2

    5.16 HorizontalScrollView

      

    5.17 MapView

      

    5.18 VideoView

      

    5.19 WebView

      

    5.20 ZoomControls

      

 

  六、             佈局和容器

  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.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"> ,注意是包名+類名。

 

  八、             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

 

  九、             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.bz2apktool-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)可以用WinRARapk檔案中解壓出來。

 

  十、             小技巧

  10.1          使用系統的圖示

         例如呼叫系統打電話的圖示:

  <ImageView android:src="@android:drawable/ic_menu_call"

  圖示名稱和效果(Android1.51.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          介面視覺化佈局工具

         系統提供視覺化佈局並不好用,這裡推薦一款,佈局完後點生成程式碼即可:

         DroidDrawhttp://www.droiddraw.org/

 

  10.7          Eclipse中看Android的原始碼

         將原始碼拷貝至android-sdk-windows\platforms\android-4\sources下即可。注意原始碼版本對應android-4資料夾,這裡指Android1.6的原始碼。

 

  十一、      Q & A

  11.1          用模擬器除錯頻繁連不上,或者報emulator-5554 disconnected的錯誤?

                  Window(視窗) -> Show Views(顯示檢視) -> device -> view menu(檢視選單)

-> Reset adb

 

  11.2          匿名類中如何使用this

         classname(類名).this

 

  11.3          程式出錯後模擬器上僅顯示應用程式遇到問題將關閉怎麼辦?

可以從LogCat中檢查錯誤,預設LogCatDDMS檢視中,可以通過以下方法調整到Java檢視與控制檯並列顯示:點選Eclipse左下角 ,點開後在其他裡面找到Android目錄下的LogCat拖拽出來即可。

 

  十二、後期維護

    12.1  2010-10-1  

      補充了許多控制元件的截圖,匯出PDF下載: http://download.csdn.net/source/2729442 

    12.2  2010-10-18

      補充了GestureOverLayView的文章連結,文章1是英語的,文章2為中文的。