掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
下文是JavaEye的zhang_xzhi_xjtu總結(jié)的OPhone/Androind入門(mén)教程,小編感覺(jué)不錯(cuò),在此推薦給大家學(xué)習(xí)。由于OPhone本質(zhì)上和Android幾乎沒(méi)什么兩樣,所以雖然本教程中所用的是OPhone,但實(shí)質(zhì)上無(wú)異于一個(gè)Android入門(mén)教程。

創(chuàng)新互聯(lián)公司是一家業(yè)務(wù)范圍包括IDC托管業(yè)務(wù),虛擬主機(jī)、主機(jī)租用、主機(jī)托管,四川、重慶、廣東電信服務(wù)器租用,服務(wù)器托管,成都網(wǎng)通服務(wù)器托管,成都服務(wù)器租用,業(yè)務(wù)范圍遍及中國(guó)大陸、港澳臺(tái)以及歐美等多個(gè)國(guó)家及地區(qū)的互聯(lián)網(wǎng)數(shù)據(jù)服務(wù)公司。
本教程主要參考
http://code.google.com/p/androidbmi/wiki/DiveIntoAndroid
這個(gè)教程是一個(gè)比較好的教程,但是天下沒(méi)有人人滿意的東西。
主要而言,對(duì)某些讀者,該教程有兩個(gè)小小的不足,1是繁體字,2是作者照顧了很多剛?cè)腴T(mén)的程序員,寫(xiě)的太細(xì)致了,比如還要抽空講一講java,xml的一些語(yǔ)法。
本文的特點(diǎn)就是,1普通話,2面向有java,xml經(jīng)驗(yàn)的程序員。主要是從一個(gè)小例子闡述一下OPhone/Android的一些重要概念。
本文的目標(biāo)是除去搭建環(huán)境外的一個(gè)5分鐘快速入門(mén)。并提供一個(gè)簡(jiǎn)單的程序代碼可以用來(lái)修改驗(yàn)證一些OPhone/Android入門(mén)時(shí)的想法,并對(duì)OPhone/Android的重要概念有一個(gè)大致的了解。
本文提供的code的測(cè)試搭建環(huán)境為OPhone。
1 背景
Android是什么?
Android 是Google開(kāi)發(fā)的基于Linux平臺(tái)的開(kāi)源手機(jī)操作系統(tǒng)。
OPhone是什么?
OPhone是中國(guó)移動(dòng)OMS系統(tǒng)下定制的手機(jī)。OPhone上的程序和Android是兼容的。
Emulator是什么?
方便程序員開(kāi)發(fā)其他設(shè)備上的程序,而對(duì)其他設(shè)備做的一個(gè)軟件模擬器。開(kāi)發(fā)的程序可以在模擬器上部署,執(zhí)行,調(diào)試。
2 安裝開(kāi)發(fā)環(huán)境
Android: http://code.google.com/p/androidbmi/wiki/InstallAndroid
JDK5+
Eclipse3.3+
ADT
Android SDK(包含Emulator)
OPhone: http://www.ophonesdn.com/documentation/ophone/gettingstarted/installing_sdk.html
JDK5+
Eclipse3.4.2
ADT
WDT
OPhoneSDK(包含Emulator)
注意安裝的***步驟在Eclipse中設(shè)置Android SDK Location。
3 創(chuàng)建簡(jiǎn)單的OPhone程序
在Eclipse中創(chuàng)建一個(gè)Android project。
里面有如下選項(xiàng)需要填寫(xiě):
Project Name:項(xiàng)目名稱。
Package name:命名空間。
Activity name:先理解為程序的入口類,以后解釋。
Application name:程序名稱。
記得加入android.jar和oms.jar。
4 OPhone目錄結(jié)構(gòu)及意義
創(chuàng)建好的OPhone項(xiàng)目有如下基本結(jié)構(gòu)。
src:java code。
res:OPhone的資源。
res\drawable:圖片。
res\layout:布局描述。
res\values:字符串定義。
AndroidManifest.xml:描述該OPhone程序。
5 OPhone關(guān)鍵概念。
部署相關(guān):
雖然我們是用java開(kāi)發(fā)的,但是結(jié)果并不是常見(jiàn)的jar,而是dex,或者apk。
過(guò)程是這樣的,我們編寫(xiě)java,編譯成class,優(yōu)化處理成dex(相對(duì)來(lái)說(shuō)mobile還是一個(gè)受限環(huán)境),和資源一起打包成apk文件。部署后由Dalvik VM執(zhí)行。
一個(gè)Ophone的應(yīng)用是多個(gè)Activity的集合。可以在AndroidManifest.xml中指定該Ophone App的入口Activity.
一個(gè)Activity是一個(gè)和用戶的基本交互流,有其自身的生命周期。Activity之間可以通過(guò)Intent傳遞信息。
關(guān)于Activity的生命周期可以參考
http://code.google.com/p/androidbmi/wiki/LifeCycle
一個(gè)Activity的實(shí)現(xiàn)采用的是MVC,其中code部分負(fù)責(zé)MC,res\layout中的xml負(fù)責(zé)View。
App中使用的字符串都可以放在res\values下xml中統(tǒng)一維護(hù),方便系統(tǒng)的維護(hù),管理。
項(xiàng)目自動(dòng)生成一個(gè)R.java來(lái)管理資源相關(guān)的引用。開(kāi)發(fā)者不需要手動(dòng)修改該文件。
6 小例子截圖。
這個(gè)例子的功能是用戶輸入名字,程序?qū)υ撚脩粽f(shuō)hello。
7 關(guān)鍵代碼解釋
HelloOPhone定義了入口Activity。
Echo定義了打招呼的Activity。
看看HelloOPhone的View部分是怎么定義的,xml的自描述性真好,都不用解釋。
Xml代碼
- < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical" android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- < TextView android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:text="@string/input_msg" />
- < EditText android:id="@+id/name" android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:text="" />
- < Button android:id="@+id/ok" android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:text="@string/ok" />
- < /LinearLayout>
看看一個(gè)Activity是怎樣和這個(gè)xml聯(lián)系起來(lái)的。通過(guò)自動(dòng)生成的R.java中的定義。注意定義的xml文件名改變R會(huì)自動(dòng)刷新。
Java代碼
- setContentView(R.layout.input);
再看看一個(gè)Activity如何通過(guò)xml中的id找到該View.
Java代碼
- b_ok = (Button) findViewById(R.id.ok);
再看看Activity怎么通過(guò)Intent啟動(dòng)另一個(gè)Echo Activity,并且給那個(gè)Activity傳遞信息。
Java代碼
- Intent intent = new Intent();
- intent.setClass(HelloOPhone.this, Echo.class);
- Bundle bundle = new Bundle();
- bundle.putString("name", name);
- intent.putExtras(bundle);
- startActivity(intent);
再看看Echo如何接收傳遞來(lái)的信息。
Java代碼
- Bundle bunde = this.getIntent().getExtras();
- String name = bunde.getString("name");
***簡(jiǎn)單的看看AndroidManifest.xml如何描述該app。
其中指明了命名空間,程序的圖像等等。
同時(shí)指出該app由2個(gè)Activity組成,并設(shè)置了HelloOPhone為入口Activity。
Xml代碼
- < manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="allen.oms" android:versionCode="1" android:versionName="1.0.0">
- < application android:icon="@drawable/icon" android:label="@string/app_name">
- < activity android:name=".HelloOPhone" android:label="@string/app_name">
- < intent-filter>
- < action android:name="android.intent.action.MAIN" />
- < category android:name="android.intent.category.LAUNCHER" />
- < /intent-filter>
- < /activity>
- < activity android:name=".Echo" android:label="@string/app_name" />
- < /application>
- < /manifest>
OPhone/Androind入門(mén)教程到此結(jié)束,希望對(duì)大家有所幫助。
【編輯推薦】

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流