快速上手:Ophone及Android入门教程

下文是JavaEye的zhang_xzhi_xjtu总结的OPhone/Androind入门教程,小编感觉不错,在此推荐给大家学习。由于OPhone本质上和Android几乎没什么两样,所以虽然本教程中所用的是OPhone,但实质上无异于一个Android入门教程。

本教程主要参考

http://code.google.com/p/androidbmi/wiki/DiveIntoAndroid

这个教程是一个比较好的教程,但是天下没有人人满意的东西。

主要而言,对某些读者,该教程有两个小小的不足,1是繁体字,2是作者照顾了很多刚入门的程序员,写的太细致了,比如还要抽空讲一讲java,xml的一些语法。

本文的特点就是,1普通话,2面向有java,xml经验的程序员。主要是从一个小例子阐述一下OPhone/Android的一些重要概念。

本文的目标是除去搭建环境外的一个5分钟快速入门。并提供一个简单的程序代码可以用来修改验证一些OPhone/Android入门时的想法,并对OPhone/Android的重要概念有一个大致的了解。

本文提供的code的测试搭建环境为OPhone。

1  背景

Android是什么?

Android 是Google开发的基于Linux平台的开源手机操作系统。

OPhone是什么?

OPhone是中国移动OMS系统下定制的手机。OPhone上的程序和Android是兼容的。

Emulator是什么?

方便程序员开发其他设备上的程序,而对其他设备做的一个软件模拟器。开发的程序可以在模拟器上部署,执行,调试。

2 安装开发环境

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中设置Android SDK Location。

3 创建简单的OPhone程序

在Eclipse中创建一个Android project。

里面有如下选项需要填写:

Project Name:项目名称。

Package name:命名空间。

Activity name:先理解为程序的入口类,以后解释。

Application name:程序名称。

记得加入android.jar和oms.jar。

4 OPhone目录结构及意义

创建好的OPhone项目有如下基本结构。

src:java code。

res:OPhone的资源。

res\drawable:图片。

res\layout:布局描述。

res\values:字符串定义。

AndroidManifest.xml:描述该OPhone程序。

5 OPhone关键概念。

部署相关:

虽然我们是用java开发的,但是结果并不是常见的jar,而是dex,或者apk。

过程是这样的,我们编写java,编译成class,优化处理成dex(相对来说mobile还是一个受限环境),和资源一起打包成apk文件。部署后由Dalvik VM执行。

一个Ophone的应用是多个Activity的集合。可以在AndroidManifest.xml中指定该Ophone App的入口Activity.

一个Activity是一个和用户的基本交互流,有其自身的生命周期。Activity之间可以通过Intent传递信息。

关于Activity的生命周期可以参考

http://code.google.com/p/androidbmi/wiki/LifeCycle

一个Activity的实现采用的是MVC,其中code部分负责MC,res\layout中的xml负责View。

App中使用的字符串都可以放在res\values下xml中统一维护,方便系统的维护,管理。

项目自动生成一个R.java来管理资源相关的引用。开发者不需要手动修改该文件。

6 小例子截图。

这个例子的功能是用户输入名字,程序对该用户说hello。

快速上手:Ophone及Android入门教程 快速上手:Ophone及Android入门教程

7 关键代码解释

HelloOPhone定义了入口Activity。

Echo定义了打招呼的Activity。

看看HelloOPhone的View部分是怎么定义的,xml的自描述性真好,都不用解释。

Xml代码

<ol class="dp-xml">
<li class="alt"><span><span class="tag"><strong><font color="#006699"><</font></strong></span><span> </span><span class="tag-name"><strong><font color="#006699">LinearLayout</font></strong></span><span> </span><span class="attribute"><font color="#ff0000">xmlns:android</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"http://schemas.android.com/apk/res/android"</font></span><span>    </span></span></li>
<li>
<span>    </span><span class="attribute"><font color="#ff0000">android:orientation</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"vertical"</font></span><span> </span><span class="attribute"><font color="#ff0000">android:layout_width</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"fill_parent"</font></span><span>    </span>
</li>
<li class="alt">
<span>    </span><span class="attribute"><font color="#ff0000">android:layout_height</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"fill_parent"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span>    </span>
</li>
<li><span>    </span></li>
<li class="alt">
<span>    </span><span class="tag"><strong><font color="#006699"><</font></strong></span><span> </span><span class="tag-name"><strong><font color="#006699">TextView</font></strong></span><span> </span><span class="attribute"><font color="#ff0000">android:layout_width</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"fill_parent"</font></span><span>    </span>
</li>
<li>
<span>        </span><span class="attribute"><font color="#ff0000">android:layout_height</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"wrap_content"</font></span><span> </span><span class="attribute"><font color="#ff0000">android:text</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"@string/input_msg"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span>    </span>
</li>
<li class="alt"><span>    </span></li>
<li>
<span>    </span><span class="tag"><strong><font color="#006699"><</font></strong></span><span> </span><span class="tag-name"><strong><font color="#006699">EditText</font></strong></span><span> </span><span class="attribute"><font color="#ff0000">android:id</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"@+id/name"</font></span><span> </span><span class="attribute"><font color="#ff0000">android:layout_width</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"fill_parent"</font></span><span>    </span>
</li>
<li class="alt">
<span>        </span><span class="attribute"><font color="#ff0000">android:layout_height</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"wrap_content"</font></span><span> </span><span class="attribute"><font color="#ff0000">android:text</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">""</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span>    </span>
</li>
<li><span>    </span></li>
<li class="alt">
<span>    </span><span class="tag"><strong><font color="#006699"><</font></strong></span><span> </span><span class="tag-name"><strong><font color="#006699">Button</font></strong></span><span> </span><span class="attribute"><font color="#ff0000">android:id</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"@+id/ok"</font></span><span> </span><span class="attribute"><font color="#ff0000">android:layout_width</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"fill_parent"</font></span><span>    </span>
</li>
<li>
<span>        </span><span class="attribute"><font color="#ff0000">android:layout_height</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"wrap_content"</font></span><span> </span><span class="attribute"><font color="#ff0000">android:text</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"@string/ok"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span>    </span>
</li>
<li class="alt"><span>    </span></li>
<li>
<span class="tag"><strong><font color="#006699"><</font></strong></span><span> /LinearLayout</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>    </span>
</li>
</ol>

看看一个Activity是怎样和这个xml联系起来的。通过自动生成的R.java中的定义。注意定义的xml文件名改变R会自动刷新。

Java代码

<ol class="dp-j"><li class="alt"><span><span>setContentView(R.layout.input);   </span></span></li></ol>

再看看一个Activity如何通过xml中的id找到该View.

Java代码

<ol class="dp-j"><li class="alt"><span><span>b_ok = (Button) findViewById(R.id.ok);   </span></span></li></ol>

再看看Activity怎么通过Intent启动另一个Echo Activity,并且给那个Activity传递信息。

Java代码

<ol class="dp-j">
<li class="alt"><span><span>Intent intent = </span><span class="keyword"><strong><font color="#006699">new</font></strong></span><span> Intent();    </span></span></li>
<li>
<span>intent.setClass(HelloOPhone.</span><span class="keyword"><strong><font color="#006699">this</font></strong></span><span>, Echo.</span><span class="keyword"><strong><font color="#006699">class</font></strong></span><span>);    </span>
</li>
<li class="alt"><span>    </span></li>
<li>
<span>Bundle bundle = </span><span class="keyword"><strong><font color="#006699">new</font></strong></span><span> Bundle();    </span>
</li>
<li class="alt">
<span>bundle.putString(</span><span class="string"><font color="#0000ff">"name"</font></span><span>, name);    </span>
</li>
<li><span>intent.putExtras(bundle);    </span></li>
<li class="alt"><span>    </span></li>
<li><span>startActivity(intent);    </span></li>
</ol>

再看看Echo如何接收传递来的信息。

Java代码

<ol class="dp-j">
<li class="alt"><span><span>Bundle bunde = </span><span class="keyword"><strong><font color="#006699">this</font></strong></span><span>.getIntent().getExtras();    </span></span></li>
<li>
<span>String name = bunde.getString(</span><span class="string"><font color="#0000ff">"name"</font></span><span>);    </span>
</li>
</ol>

最后简单的看看AndroidManifest.xml如何描述该app。

其中指明了命名空间,程序的图像等等。

同时指出该app由2个Activity组成,并设置了HelloOPhone为入口Activity。

Xml代码

相关推荐