Andriod:由HelloWorld展开的基础概念

1.环境搭建

  网上关于环境搭建已经有不少文章,这里可以参考一下这个网址。http://www.cnblogs.com/huaping-audio/archive/2009/05/26/1490455.html

  另外买Andriod手机的时候官方也会有相应的SDK和相关文档和模拟器可以下载,我用的是国产魅族M9,按照官方给出的文档进行了配置,如果新建项目的时候有问题,在Windows→Android SDK and AVD Manager中 Update All一下就可以了。

 

2.首先建立一个HelloAndriod项目,对Andriod开发有一个大概的认识

其中有几个必填项:

ProjectName:包含这个项目的资料文件夹名称

ApplicationName:显示在应用程序上的标题

PackageName:这个是命名空间,而且也是套件名下Activity生成的地方。命名有一定规则 com.andriod.[ActivityName]

CreateActivity:项目的主要类别,可以在这里启动程序并控制程序流程,或控制屏幕界面等。

MinSDKVersion:选择程序要运行的最低版本。

好了,这里我们依次命名:

  • Project name: HelloAndroid
  • Application name: Hello, Android
  • Package name: com.example.helloandroid (or your own private namespace)
  • Create Activity: HelloAndroid

点Finish后建立相应的项目:

首先展开HelloAndroid > src > com.example.helloandroid,打开HelloAndroid.java ,看到以下代码:

 

package com.example.helloandroid;
import android.app.Activity;
import android.os.Bundle;
public class HelloAndroid extends Activity {    
  /** Called when the activity is first created. */    
  @Override    
  public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }}

这里看到我们的类继承于Activity,Activity在程序中相当于actions。@Override标示重写这个onCreate方法。Bundle参数保存了应用程序上次关闭时的状态,并且可以通过一个Activity传给下一个Activity。接下来改写一下这个方法:

 

package com.example.helloandroid;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloAndroid extends Activity
{
   
/** Called when the activity is first created. */
   @Override   public void onCreate(Bundle savedInstanceState)
 {
       super.onCreate(savedInstanceState);
       TextView tv = new TextView(this);
       tv.setText("Hello, Android");
       setContentView(tv);
   }
}

大致可以看出,我们新建了一个TextView文本,然后设置它的Text为“Hello,Andriod”,最后让这个文本显示出来。

View就是界面中显示的各种元素,TextView就就继承了它的文本元素。

this代表了我们这个Context引用。

点运行可以看到模拟器上的样子:

 

但其实上,既然采用MVC的开发模式,肯定会有界面与逻辑的分离,实际上我们开发过程中,各种View是分离出来的,Andriod的界面是用XML方式来表示的,有些类似于HTML。再回过来看一下我们的程序。

打开res/layout/main.xml,将代码替换成下面这样:

 

<?xml version="1.0" encoding="utf-8"?>
  android:id="@+id/textview"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:text="@string/hello"/>

xmlns:android 声明引用了Andriod的命名空间,每个界面都要有这个声明。
android:id 指定这个元素的唯一ID。它的命名有些特别,在代码中我们可以通过类似R.id.height控制这个元素中的属性。
android:layout_width 在这里是充满全屏的宽
android:layout_height 充满全屏的高。
android:text 这里我们指定了文本资源,资源文件在res/values/strings.xml 中。

HelloAndroid 这个class改回原样。点运行。

3.更深层次的东西:

Andriod并不直接使用XML文档,而是XML描述转换成资源,程序要使用某个界面或各种资源的时候,会通过索引来查询。

我们看一下gen里生成的R.java文件:

 

/* AUTO-GENERATED FILE.  DO NOT MODIFY.
 *
 * This class was automatically generated by the
 * aapt tool from the resource data it found.  It
 * should not be modified by hand.
 
*/

package com.example.helloandroid;

public final class R {
    
public static final class attr {
    }
    
public static final class drawable {
        
public static final int icon=0x7f020000;
    }
    
public static final class id {
        
public static final int textview=0x7f050000;
    }
    
public static final class layout {
        
public static final int main=0x7f030000;
    }
    
public static final class string {
        
public static final int app_name=0x7f040001;
        
public static final int hello=0x7f040000;
    }
}

开发工具会根据XML的描述,生成对应的资源,自动指定一个位置。

在XML中我们就可以使用@[类型]/[识别符号] 这样的语法来识别符号。

 

一些API和元素说明我们可以通过google的离线文档进行查询。

posted @ 2011-03-19 10:10  kumaws  阅读(622)  评论(1编辑  收藏  举报