.net開發人員對android開發一周的學習體會

來源:互聯網
上載者:User

標籤:android   blog   http   java   使用   os   io   strong   

 春節期間,相對比較閑,上班時也沒什麼事情做。利用這一周的時間,簡單的學習了一下移動方面的開發。主要是針對android,其實我對IOS更感興趣 (因為我用iphone),苦於暫時沒有蘋果電腦,只能把它放到以後學習。我的工作中暫時沒有用到移動方面的開發,自己以前也一直做.net方面的應用。在這裡以一個.net開發人員的思維記一下對android開發學習中的一點自己的心得和體會。初學者的胡言亂語,高手請一笑而過。

  1. 開發環境搭建

先下載JDK安裝。對於android的SDK和eclipse,可以直接到android的網站(http://developer.android.com/sdk/index.html#download )上下載,它已經把eclipse封裝好了,下載來可以直接使用,不需要配置android SDK。

對於模擬器,我推薦一個叫BlueStack的,很好很強大,比eclipse上帶的AVD的速度快多了。唯一的缺點就是屏很大,好像不能調整屏的尺寸。

2. android項目結構

對於整個android項目,一般我們需要關注的是常用的兩個目錄和一個檔案。

  • src目錄,所有的java代碼都在這個目錄下。
  • res目錄,所有的資源檔都在這個目錄下。
  • AndroidManifest.xml檔案,系統的配置資訊,很重要的一個檔案。系統中一些功能和頁面的授權都要在這裡定義。有時一些功能或頁面不能成功調用,可以首先去檢查一下是否在該檔案中授權了。

3. Activity

android中最基本的任務對象,我把它簡單的理解成.net開發的表單或頁面。一個Activity上可以有多個view,所有的控制項(widget)都是從view中繼承來的。Activity的布局有兩種方面,一種是用layout檔案來實現,代碼中用setContentView載入相應layout檔案,相當於一個畫好控制項的form;而另一種是動態用代碼實現布局,好比.net中的動態產生的頁面。

4. Intent

兩個activity間的通訊就通過intent了。我把它理解成類似asp.net中的request + response對象。Intent中可以傳遞一個或多個資料,多個資料的傳遞一般打包成一個Bundle。Intent用putExtras方法載入傳遞的資訊。而子表單可以用getIntent得到傳過來的intent。

  • 用startActivity(intent)直接開啟一個不需傳回值的子表單。
  • 用startActivityForResult開啟一個要傳回值的子表單。子表單中用setResult(RESULT_OK, intent)設定傳回值,父表單需要重載onActivityResult方法 得到返回資訊。
  • 利用intent可以調用系統功能,比如郵件,簡訊,電話,連絡人等等。調用系統功能或表單需要Url,比如下面是電話功能。
Uri uri = Uri.parse("tel:13800138000"); Intent it = new Intent(Intent.ACTION_DIAL, uri); startActivity(it);

5. 資源檔(resource)

Android中的資源檔很強大,圖片,描述文本,頁面配置,風格等都可以放到資源檔中。在程式中用R對象可以取到各資源對應的id,這個id是系統自動產生的一個常量,你可以在gen目錄下的R.java下找到相應的定義。在程式中用getResources()加R對象可以取得相應的資源。

6. GridView和ListView的使用

程式離不開資料,而一般多資料介面離不開Grid或List。Android中的這兩種控制項也跟.net的DataGrid和DataList類似,需要給他們一個資料來源,但它們的資料來源就比DataSource要複雜得多,它們的資料來源是一個Adapter。通常,我們需要重寫一個基於BaseAdapter的子類。GridView的項很類似.net中DataGrid的模板列,子項上可以加很多的控制項。這些控制項的定義的和資料繫結需要在Adapter中的getView方法中實現。

  • 寫一個Adapter類,Adapter所需要的資料,通常我們是用一個ArrayList傳給它。而在這個類中,最主要的就是重寫getView方法。每個GridView和ListView的項的表現方式就在這個方法中定義的。在這個方法裡,你可以為每個項加控制項,或者控制項所對應的事件。
  •  資料繫結。把資料來源(通常為ArrayList)傳給一個Adapter,GridView或ListView用setAdapter去綁定這個Adapter。
  •  資料項目發生了變動,用Adapter的notifyDataSetChanged方法去重新整理控制項。

7. SQLite

SQLite我只是簡單的使用,感覺它的文法是用標準的SQL文法,但我只發現它的table功能,沒有發現有類似視圖和預存程序的功能。由於資料是存在你的手機上某個地方,不像SQL server等資料,我們沒法事先建立一個資料庫。所以通常的做法是寫一個自己的DBOpenHelper,它是SQLiteOpenHelper的一個子類,我們需要重寫它的onCreate和onUpgrade方法。以便第一次使用時建立自己的資料表。(在onCreate中用CREATE TABLE IF NOT EXISTS TABLE語句)。

(註:剛看到一網友的回複,SQLite 可以事先建立一個資料庫,方式有點特別,很不錯。它是事先準備好一個資料庫檔案,然後第一次運行時copy到相應的SQLite資料庫所在目錄。可以參考以下文章。其實同樣的道理,我想開始可以準備一個XML或文字檔,程式第一次運行時把XML檔案中的內容insert到建立的表中,這樣是否更方便呢?更不用關心SQLite檔案是放在哪個目錄下的。)
http://www.akasuna.com/2012/03/09/embed-sqlite-database-in-the-apk-of-android-distributed-application/)

8. TabHost使用

Android中的tab控制項很不好用。我想寫一個底部多個選項,點不同選項開啟不同頁面的功能,很不好實現。好不容易用TabHost實現了,發現一個很大的問題就是,開啟的tab頁面,再跳轉到另一個子頁面去,底下的tab就全都不見。最後查了很多資料,說用GroupView或Fragment可以解決,Fragment我還沒有學到,參考了網上一篇文章,用GroupView實現了

http://hkp.iteye.com/blog/1185482

9. PhoneGap

很強大的一個東西,號稱是多平台開發架構。我用它來寫了幾個簡單的頁面,非常好實現。可以做到真正以html5 + javascript寫android程式,它可以用javascript調用android API,比如調用連絡人資料,電話,簡訊,網路攝影機,SQLite資料庫等。特別是加上jQuery mobile,寫一些基於網路資料的程式,非常簡單,頁面也很漂亮。但用它寫的頁面,我在模擬器上試了,好象有將近一秒鐘的延遲,速度還是比原生程式差很多。

10. 網路資料的非同步擷取和檔案的讀寫

正在學習中…

 

 

評論列表   回複引用#1樓 2013-02-19 17:11 walkline  用PhoneGap開發的web app 速度慢支援(0)反對(0)  回複引用#2樓 2013-02-19 17:13 IT小崽  不錯。。很強大!我還沒去弄Android呢。前些日子弄了下Window Phone的開發支援(0)反對(0)  回複引用#3樓 2013-02-20 08:20 李小超  你錯了,SQLite 可以事先建立一個資料庫

http://www.akasuna.com/2012/03/09/embed-sqlite-database-in-the-apk-of-android-distributed-application/支援(0)反對(0)  回複引用#4樓[樓主] 2013-02-20 08:30 飛不動  @李小超
引用你錯了,SQLite 可以事先建立一個資料庫

http://www.akasuna.com/2012/03/09/embed-sqlite-database-in-the-apk-of-android-distributed-application/

學習了,很不錯的資料。謝謝!支援(0)反對(0)  回複引用#5樓 2013-02-20 08:47 李小超  SQLite檔案所放的目錄名,其實就是 【/data/data/{app包名}/databases/】,是固定死的,明顯預先準備好包含資料的資料庫方便啊。

如果資料較多,幾萬條資料甚至更多,你那種方法插入資料時候估計太耗時了

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.