Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 高級開發 >> 對Android UI實例全解析

對Android UI實例全解析

編輯:高級開發

下面文章著重講解界面的android UI部分,基本的操作大家還是了解的,把整個屏幕看做一個二維數組,每一個元素可以視為一個方塊,因此每個方格在游戲進行過程中可以處於不同的狀態。

比如空閒,牆,蘋果,貪食蛇(蛇身或蛇頭)。我們在操作游戲的過程,其實就是不斷修改相應方格的狀態,然後再讓整個VIEw去重繪制自身(當然,還需要加入一些游戲當前所處狀態(失敗或成功)的判定機制)。

那麼在游戲還未正式開始前,首先要做一些初始化工作,在VIEw第一次加載時會首先調用onSizeChanged,這裡就是做這些事的最好時機。注意模擬器屏幕默認的像素是320×400,而代碼中默認的方格大小為12,因此屏幕上放置的方格數為26×40,把屏幕剖分成這麼大後。

設置一個相應的二維int型數組來記錄每一個方格的狀態,根據方格的狀態,可以從mTileArray保存的圖標文件中讀取對應的狀態圖標。第一次調用完onSizeChanged後,會緊跟著第一次來調用onDraw來繪制VIEw自身,當然,此時由於所有方格的狀態都是0,所以它在屏幕上等於什麼也不會去繪制。

  • 對android SDK開發入門學習
  • 蘋果要作惡?喬布斯要求程序員刪除Androi
  • 詳細解讀android應用線程問題
  • 圖解android Devices相關工作
  • 搭建android平台注意事項

onDraw要做的工作非常簡單,就是掃描每一個方格,根據方格當前狀態,android UI從圖標文件中選擇對應的圖標繪制到這個方格上。當然這個onDraw在游戲進行過程中,會不斷地被調用,從而界面不斷被更新。想象下對整個游戲屏幕拍張照,然後對其下一個狀態再拍張照,那麼兩張照片之間的區別是怎麼產生的呢?對於系統來說。

它只知道不斷調用onDraw,後者負責對整個屏幕進行繪制,那要產生兩個屏幕之間的差異,肯定要通過一些手段對某些數據結構。(比如這裡的二維方格地圖)進行調整(比如用戶的控制指令,定時器等),然後等到下一次onDraw時就會把這些更改在界面上反映出來。

這裡要著重說明下private long mMoveDelay = 600;這個成員變量,雖然很不起眼,但仔細考慮它的作用就會發現很有趣,那麼改變它的大小到底是如何讓我們感覺到游戲變快或變慢呢?

可以打個簡單的比方,在時刻android UI啟動,首先把蛇和蘋果的位置都在方格地圖上作好了標記,然後我們在update函數中修改蛇身讓蛇向北前進一步。而這個改變此時還只是停留在內部的核心數據結構上(即二維方格地圖),還沒有在界面上顯示出來。當然,我們馬上想到要想讓這更改顯示出來。

讓系統調用onDraw去繪制不就完了嗎?可是問題是我們不知道系統是隔多長時間去調用onDraw函數,於是mMoveDelay此時就發揮作用了。通過它就可以設置休眠的時間,等時間一到,馬上就會通知SnakeVIEw去重繪制。你可以試試把mMoveDelay數值調大,就會看出我上面提到的“拍照“的效果。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved