前段時間終於拿下了蓄謀已久的HTC G2 TIM,並且在手機上安裝了各種各樣的軟體好好的玩了一把。總體感覺Android的應用相對來說還是少了一些,耐玩的遊戲還不多。其中鑽石迷情(jewels)還算是比較耐玩的,時間模式下我現在的最高分是46230,和高手比起來,不知道這個分數是不是還低了些呢,呵呵。我非常期待popcap的植物大戰殭屍能夠儘快移植到Android平台,這款遊戲深受廣大玩家的喜愛,原因就是非常的耐玩,並且考驗智力。
智能手機的好處就是可以自己裝軟體,甚至是自己寫在手機裡啟動並執行軟體。Android的程式需要使用Java開發,這點讓我有些不爽。因為一直以來我對Java都不太感冒,雖然在文法上看起來和C#很相似。但是沒辦法,我還是決定硬著頭皮把eclipse裝上,決定學習一下Android應用程式的開發,並且,打算第一個項目把之前使用Python寫的NancyGLines遊戲移植到Android中。這對我來說是一個激動人心的項目,第一次學習手機軟體的開發,希望NancyGLines能夠早點出來,放到Android Market裡。
為了我的開山之作,自然要先瞭解Android開發的知識。於是,我在網上找了一圈,發現資料還不少,下面是我找到的電子書列表,都可以Google到,找不到的可以留言問我要:
Android-A-Programmer’s-Guide
Android-Essentials
Introduction-To-Android
Professional_Android_2_Application_Development
Android.Application.Development.-.Programming.With.The.Google.Sdk.(O'reilly,.2009,.0596521472)
由於剛入門,我還是選擇先看Android的官方文檔:
http://developer.android.com/guide/index.html
官方的文檔非常的詳細,從基礎介紹,內部架構,到入門教學樣本,到每個API的說明,都非常詳細。因此,我花了2個晚上的時間,把Android開發的一些基礎文章以及入門樣本都看了一遍,對Android開發有了一些初印象,在這裡做為自己的學習筆記記錄一下。
工欲善其事必先利其器,首先我需要把Android的開發環境配置好。相信也有很多朋友和我一樣,在這裡耽誤了不少了時間。其實官方的文檔中已經寫的很詳細,只能怪我沒有仔細的看清楚。ADT外掛程式老是安裝不少,最後的原因是沒有安裝JDK。
步驟如下:
1. 下載並安裝JDK(5或6)。
2. 下載並解壓Eclipse。
3. 下載Android的SDK,解壓後,設定環境變數PATH到Tool目錄。
4. 在Eclipse中通過https://dl-ssl.google.com/android/eclipse/
下載並安裝Android Development Tools (ADT) Plugin。
5. 裝好重啟Eclipse後,在Window - Preference中設定Android SDK的路徑。
6. 開啟Android SDK and AVD Manager,安裝不同平台的Android SDK版本,比如Andoid2.1 Android1.6。
完成了,其實並不複雜。接下來瞭解一下Android的架構:
由於是入門,看上面這張圖還不是很有感覺。隨著以後的深入,再回過頭來看這張圖,應該會更有感覺。
開發環境配置好後,最行之有效學習方法是看官方的Tutorials,包括:
- Hello World
- Hello Views
- Hello Localization
- Notepad Tutorial
通過上面的樣本,我會瞭解到以下東西:
1. Activity
Activity控制使用者介面操作的實體,一個應用程式可以有多個Activity,但同時只能有一個Activity的使用者介面呈現在使用者面前。我們需要實現一個類,繼承自Activity類,通過重寫父類的一些特定方法,就能實現在某些事件發生下,執行一些特定的代碼。比如,使用者按鍵,觸控螢幕幕的某個點等等。其中,關於Activity的幾個狀態,需要重點搞清楚,見:
2. View
使用者介面布局是通過xml來描述的,比如:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ListView android:id="@android:id/list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView android:id="@android:id/empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/no_notes"/>
</LinearLayout>
裡面的ListView ,TextView可以理解為內建的一些控制項。同時,我們也可以實現自己自訂的View,只要繼承自View類。比如:
<com.coderzh.nancyglines.GLinesView
android:id="@+id/glines"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
然後實現GLinesView類:
public class GLinesView extends View {
}
其中一個最重要的方法就是onDraw,用來畫想要呈現的使用者內容。比如,我想在螢幕上寫一個Hello。
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
mPaint.setTextSize(20);
mPaint.setColor(Color.BLUE);
canvas.drawText("Hello", 20, 20, mPaint);
}
3. Intent
Intent表示你想要做什麼,AndroidManifest.xml中的filterIntent表示你的應用程式能夠處理什麼樣的Intent。有時,還可以通過Intent來實現不同表單間互相傳遞資訊。
4. AndroidManifest.xml檔案
相當於ASP.NET的Web.config檔案了,全域的一些配置。比如,設定Activity,filterIntent等等。
5. 資源訪問的R.java
Android裡訪問資源非常簡單,當我們添加了資源到res目錄後,ADT外掛程式會自動更新R.java檔案,通過R類,就能輕鬆的訪問到任何res中的資源。同時,也可以介面的xml中方面的使用。
6. 資料庫
使用sqlite,有現成的SQLiteDatabase類可用來操作資料庫。
上面都只是非常粗略的介紹,想要更深的理解還需要更多的實踐。不過,通過瞭解上面的基本內容,我們可以大致瞭解開發過程中的一些步驟的實施方式。比如,介面布局在哪裡設定,事件如何觸發,資料如何儲存,資源如何使用等等。以後若有所得,再來總結了。