2011年4月8日 星期五

[Android]利用Java Class繼承View來呈現Android畫面

要設計Android的畫面有兩種方式:
一種是仿間書本都會教的第一招,利用xml來寫畫面。
二種則是用java來寫,透過class繼承view這個類別來達成。

目標:
1.利用java來呈現android手機畫面、
2.滑鼠點擊螢幕拖動圖形。

先開一個新專案,Application name是會顯示在手機軟體列上的名稱,對一個軟體的辨識度有很大的影響,Package name是這個Project的資料夾結構,最內部就是放著.java檔,通常都習慣把網址倒過來寫,Create Activity是替你先創造一個Activity,一個Android軟體一定要有一個Activity(活動), 手機才能執行,這裡就先幫他取名,Mini SDK Version就看你上面勾選哪個版本就照用吧。


除了我自己上的註解外,這是剛開始最乾淨的Activity。我們就是要把  setContentView(R.layout.main);原本是抓取資源檔 layout內的main.xml改成我們自己寫的java class。


在專案上點右鍵,新增一個Class。


剛開始最乾淨的class


先讓他extends View,會有錯誤。


再利用ctrl+shift+O,讓系統自動幫你import。import之後還是會有錯誤,是因為View有規定你必須要擁有建構函式。


 在錯誤紅線上停留,他就會提示你該要怎麼做。建構函式有了,錯誤就解決了。

  繼承View的class架構好了,Activity就拿來用吧,利用setContentView(m_MyView_01)。

複寫onDraw,Canvas就如同畫布一般。


canvas.drawColor(顏色),顏色可以是色碼,或是android API設的常態變數。


Color.呼叫常態變數



以40為間隔劃出水平線。

呈現結果。

再畫垂直線。

畫圓。

將圓的座標直徑設為全域變數。

判斷手指是否有點到圓。

 移動圓以及離開圓的動作function

Thread設置,這樣才可以一直刷新圓的位置。

設定優先權。



在Activity中複寫onTouchEvent,偵測MotionEvent。

android api的常態變數。

手指按下、移動、拿起的位置偵測,再丟給View的function處理。

之前發現圓不會動!!!原來是忘了設true!!!

結果測試的結果,不在圓上也可以移動圓!!!怪了!!!

原來是我在移動圓的判斷是這邊寫錯啦...找好久。m_bIsTouchDownCircle是boolean變數啦!

直接放if內就好了。
                  
最後結果。



1 則留言: