以下均轉自Android遊戲編程入門經典,轉載請標明出處
在準備Android遊戲編程前,我是一籌莫展不知從何下手!
這幾天通過看書學習,慢慢理清思路。開始Android遊戲編程前並不需要對Android API有深刻瞭解,
我們只需要對Android遊戲編程所需要的API有所瞭解就可以了。我們大概要先瞭解:
視窗管理
輸入
檔案IO
音頻
圖形
先對資訊清單檔進行瞭解
<activity android:name="org.example.ch04_android_basics.AndroidBasicsStarter" android:label="@string/app_name" android:screenOrientation="landscape" android:configChanges="keyboard|keyboardHidden|orientation" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
name:用於指定活動類的名稱,相對於<manifest>元素中指定的包屬性(如:package="org.example.ch04_android_basics")。
label:該標籤將顯示在活動(如果有的話)的標題列上。如果活動是應用程式的進入點,那麼該標籤也會作為文本顯示在應用程式啟動器中。如果我們不指定該標籤,那麼<application>元素裡面的標籤將會取代它。
ScreenOrientation:該屬性用於指定活動將使用的方向。這裡我們指定的是橫向(landscape)模式,如果想工作在縱向模式就用(portrait)方向。這兩個屬性配置將會使活動在其生命週期內保持特定的方向,而不管裝置實際方向怎麼變化。如果不指定該屬性,那麼活動將會使用裝置當前方向,它取決於加速計的資料。這就意味著每當裝置的方向發生變化時,活動將會銷毀並重新啟動——這在遊戲中是不能接受的。
configChange:調整裝置方向或滑出鍵盤可認為是一種配置更改。在這樣一種更改下,Android系統會銷毀並重啟應用程式以適應這種變化,這在遊戲中就很糟糕了。<activity>元素的configChange屬性就會派上用場。它允許我們指定某種想處理的配置更改,而不是銷毀並重啟應用程式的活動。可通過|字元將多個配置更改串連起來進行指定。在這裡我們處理了keyboard、keyboardHidden、orientation更改。
對於<action>和<category>這兩個元素,只需要指定name屬性,android.intent.action.MAIN,它可被Android系統用來啟動一個應用程式的主活動。而android.intent.category.LAUNCHER這個意圖用於告訴Android系統,應用程式是否有一個特定的活動應該在應用程式啟動器中有一個入口。
<uses-permission>元素將指定應用許可權,通常一個許可權形式如下:
<uses-permission android:name="string">
下面是一些可能用到的許可權名稱:
android.permission.RECORD_AUDIO:允許我們訪問音頻錄製硬體。
android.permission.INTERNET:允許我們訪問所有的連網API
android.permission.WRITE_EXTERNAL_STORAGE:允許我們讀寫外部儲存空間的檔案,一般是指裝置上的SD卡。
android.permission.WAKE_LOCK:允許我們擷取一個所謂的喚醒鎖。有了該喚醒鎖,當螢幕一段時間沒有被觸摸時,可通過它防止裝置進入睡眠狀態。例如,在重力感應的遊戲中就會派上用場。
android.permission.ACESS_COARSE_LOCATION:允許擷取非GPS層級的存取權限,例如使用者所在的國家,這對配置語言預設設定和分析十分有用。
android.permission.NFC:允許應用程式通過NFC(Near-Field Communication, 近距離無線通訊)執行IO,這對於許多涉及快速交換少量資訊的遊戲功能十分有用。
<uses-feature>元素有以下屬性:
<uses-feature android:name="string" android:required=["true"|"false"]android:glEsVersion="integer"/>
name屬性指定該功能本身,而required屬性用於告訴過濾器我們是否在任何情況下都需要該功能或者該功能是可有可無的。最後是一個可選屬性,只與特定的OpenGL ES版本協同使用。對於遊戲開發而言,下面這些功能是最相關的:
android.hardware.touchscreen.multitouch:這要求裝置具有多點觸摸互動的螢幕,如捏拉縮放這類的操作。這種類型的螢幕在獨立追蹤多根手指方面存在問題,因此需要你評估這些功能是否足以支援你的遊戲。
android.hardware.touchscreen.multitouch.distinct:這是上一項的關聯功能,它要求具有完全的多點觸控能力來實現像螢幕上的虛擬雙搖杆等控制功能。