本文介绍一个十分简单的Android工程的组织,由java语言编写。
这个例子是为了说明如何在没有任何Android开发基础的前提下强行开始工程的研发,适合于有一定其他类的较大项目开发经验,但基本首次接触Android的研发人员。
以下为这个Android工程的组织结构,其中比较重要的地方都已经展开了。
src目录下的test1.java为主要源程序,如果工程比较复杂也可以有多个源程序文件。gen目录下的R.java为一个自动生成的java代码文件,主要用来标记界面上各个元素的情况,一般来说开发者不需要修改这个文件。
res\layout目录下的main.xml为主界面,res\values目录下的strings.xml保存了一些字串常量,一般情况下无需修改名字,也可以在主要源程序代码中指定。
在res目录下还保存了程序的图标,图片资源等,管理起来都比较简单,本例中也不讨论这些地方。
下面是这个简单例子的界面,比较随意,只为说明问题。
左面为控件库,可以直接用来拖动设计界面,如需要复杂的排版效果,可以直接编辑xml文件。该文件中同时保存了每个控件的id名。例如这里的第一个按钮的对应部分为:
<Button
android:text="Button123"
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" >
</Button>
本例包含几个基本的控件,即一个字串,两个按钮,一个单行文本编辑框。一般的说,如果觉得这些控件不够美观可以自己画图,再为图片编写事件,大部分情况可以糊弄着用。
以下为源码文件的内容,注释中将详细说明哪些是非常重要的,哪些是必须手动添加的。
package com.test1;
// 指定的程序名称,在创建工程时由开发者填写
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
// 显示专用库
import android.view.View.OnClickListener;
// 处理点击事件的专用库
import android.widget.Button;
// 按钮专用库
import android.widget.TextView;
// 字串label的专用库
import android.widget.EditText;
// 编辑框的专用库
// 在添加控件时,以上代码并不会被自动加入,需要手动添加
// import相当于C#的using或Delphi的uses
public class test1 extends Activity {
// 与文件名相同的类
private Button mBtn1, mBtn2;
private TextView mText;
private EditText e3;
// 定义具体的对象,与主界面中对应,对象名任意起即可
/** Called when the activity is first created. **/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 以上两行均为自动生成,可以理解为程序入口,通常不要修改
// (关于程序入口的定位Google的解析非常糊涂,初学者基本看不懂,可以就当是这里)
setContentView(R.layout.main);
// 选择一个xml的定义作为主要界面,即指定main.xml
mBtn1 = (Button) findViewById(R.id.button1);
mText = (TextView) findViewById(R.id.Text1);
mBtn2 = (Button) findViewById(R.id.button2);
e3 = (EditText) findViewById(R.id.editText1);
// 需手动用findViewById将控件与具体对象关联
mBtn1.setOnClickListener(new OnClickListener() {
// 为第一个按钮的点击设置监听
public void onClick(View v)
// 本行可认为是固定写法
{
mBtn2.setText(e3.getText());
};
// 具体的内容可以直接写在这部分
});
mBtn2.setOnClickListener(new View.OnClickListener() {
// View.OnClickListener与不写View是一样的,但是输入View.
// 之后可在弹出的列表中直接选择OnClickListener,
// 下面一行也会自动生成
public void onClick(View v) {
// TODO Auto-generated method stub
onTTTT();
// 具体的内容也可以写在后面单独的函数
}
});
// 以上内容需在OnCreate过程中写完
}
public void onTTTT() {
mBtn2.setText(mText.getText());
}
}