Android與J2ME區別之我見(2)

來源:互聯網
上載者:User
上一次說到Android的Activity與J2ME的MIDlet的比較,那麼這一次將要做對比的兩個類,分別是J2ME的Displayable類與Android的View類。

說到Displayable類,也許大家沒怎麼直接用過,但是Canvas和Form這兩個類對於J2ME手機編程的同學來說一定非常熟悉,它們分別是呈現低級使用者UI和進階使用者UI所必不可少的。以Canvas為例,J2ME對其封裝了大量可被繼承和Override的方法(其中paint(Graphics g)方法必須重寫),這些方法的功能涵蓋了觸控螢幕操作響應、按鍵響應以及螢幕繪製等多個方面。通過這些方法,我們可以監聽使用者的輸入,並且向使用者反饋不同的輸出,即重新整理屏顯。上述功能是canvas作為UI必須要做的事情。

Android中的View類,功能還要強大很多,通過Override它的onDraw(Canvas canvas)方法可以實現螢幕的繪製,觸控螢幕響應與按鍵響應也通過設定預設的listener得以實現。

原理上說起來,這兩個又是非常相像的,不過區別也很大,我列舉幾個我發現的區別。
1、repaint()方法與invalidate()/postInvalidate()方法
如果去讀API,我們可以發現J2ME中Canvas的repaint()與Android中View的invalidate()/postInvalidate()方法實現了相同的功能(連解說文字幾乎都一樣…),但是invalidate()/postInvalidate()兩者卻有著區別:invalidate()只能在UI這個線程裡通過調用onDraw(Canvas canvas)來update螢幕顯示,而postInvalidate()是要在non-UI線程裡做同樣的事情的。這就要求我們做判斷,哪個調用是本線程的,哪個不是,這在做多線程callback的時候尤為重要。而在J2ME中,不管怎樣直接調用repaint()就好了

2、另外,Android的View類的顯示很大程度上是從XML中讀取的,包括了它的layout與很多屬性,至於怎麼讀的以後再談。而Canvas只需要Custom Draw就可以了,而且Canvas不能設定大小(那個fullScreenMode免談),但是View可以。

3、View的建構函式,我們不需要再Activity中調用,但是Displayable的是必須的。在Activity中,我們要通過findViewById來從XML中取得View,然後強制轉換成View的子類型即可,而J2ME的Canvas是一定要構造出來的。

4、也許在UI的應用上,Android比J2ME強大的地方,就在於它的View有很多定義好的子類能讓我們調用,就像VS.net中WinForm編程中那些控制項一樣,會很方便,也很漂亮。因為Android開源,將來普及之後一定會有很多第三方的控制項能為我們所用,這才是大大拓展了Android之處。這會把我們從那些graphics.drawXXX函數中解放出來,也能讓我們的應用程式變得更酷更炫。

關於對View(Android)和Displayable(J2ME)——主要是Canvas的比較我就談這麼多,我想會有很多地方沒有考慮到,以後再補充吧。還是老樣子,怎麼用去讀API和樣本程式,我就不多說了。

下一次應該是對Android的Bitmap類以及J2ME的Image類進行比較。

謝謝!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.