第12页
- #111111
(4)在主活动,也就是MainActivity中,应用以下代码指定活动应用的布局文件。
setContentView(R.layout.main);
说明: 在应用Eclipse创建Android项目时,Eclipse会自动在主活动的onCreate()方法中添加指定布局文件main.xml的代码。
在模拟器上运行本实例,将显示如图3.1所示的运行结果。
图3.1 实现游戏的开始界面
3.1.2 在代码中控制UI界面
Android支持像Java Swing那样完全通过代码控制UI界面。也就是所有的UI组件都通过new关键字创建出来,然后将这些UI组件添加到布局管理器中,从而实现用户界面。
在代码中控制UI界面可以分为以下3个关键步骤。
(1)创建布局管理器,可以是帧布局管理器、表格布局管理器、线性布局管理器和相对布局管理器等,并且设置布局管理器的属性。例如,为布局管理器设置背景图片等。
(2)创建具体的组件,可以是TextView、ImageView、EditText和Button等任何Android提供的组件,并且设置组件的布局和各种属性。
(3)将创建的具体组件添加到布局管理器中。
下面通过一个具体的实例来演示如何使用Java代码控制UI界面。
例3.2 在Eclipse中创建Android项目,名称为3.2,完全通过代码实现游戏的进入界面。(实例位置:光盘\TM\sl\3\3.2)
(1)在新创建的项目中,打开src\com\mingrisoft目录下的MainActivity.java文件,然后将默认生成的下面这行代码删除。
setContentView(R.layout.main);
(2)在MainActivity的onCreate()方法中,创建一个帧布局管理器,并为该布局管理器设置背景,关键代码如下:
FrameLayout frameLayout = new FrameLayout(this); //创建帧布局管理器
frameLayout.setBackgroundDrawable(this.getResources().getDrawable(
R.drawable.background)); //设置背景
setContentView(frameLayout); //设置在Activity中显示frameLayout
(3)创建一个TextView组件text1,设置其文字大小和颜色,并将其添加到布局管理器中,具体代码如下:
TextView text1 = new TextView(this);
text1.setText("在代码中控制UI界面"); //设置显示的文字
text1.setTextSize(TypedValue.COMPLEX_UNIT_PX, 24); //设置文字大小,单位为像素
text1.setTextColor(Color.rgb(1, 1, 1)); //设置文字的颜色
frameLayout.addView(text1); //将text1添加到布局管理器中
(4)声明一个TextView组件text2,因为在为该组件添加的事件监听中,要通过代码改变该组件的值,所以需要将其设置为MainActivity的一个属性,关键代码如下:
public TextView text2;
(5)实例化text2组件,设置其显示文字、文字大小、颜色和布局,具体代码如下:
text2 = new TextView(this);
text2.setText("单击进入游戏......"); //设置显示文字
text2.setTextSize(TypedValue.COMPLEX_UNIT_PX, 24); //设置文字大小,单位为像素
text2.setTextColor(Color.rgb(1, 1, 1)); //设置文字的颜色
LayoutParams params = new LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT); //创建保存布局参数的对象
params.gravity = Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL; //设置居中显示
text2.setLayoutParams(params); //设置布局参数
说明: 在通过setTextSize()方法设置TextView的文字大小时,可以指定使用的单位。在上面的代码中,int型的常量TypedValue.COMPLEX_UNIT_PX表示单位是像素,如果要设置单位为磅,可以使用常量TypedValue.COMPLEX_UNIT_PT,这些常量可以在Android官方提供的API中找到。
(6)为text2组件添加单击事件监听器,并将该组件添加到布局管理器中,具体代码如下:
text2.setOnClickListener(new OnClickListener() { //为text2添加单击事件监听器
@Override
public void onClick(View v) {
new AlertDialog.Builder(MainActivity.this).setTitle("系统提示") //设置对话框的标题
.setMessage("游戏有风险,进入需谨慎,真的要进入吗?") //设置对话框的显示内容
.setPositiveButton("确定", //为“确定”按钮添加单击事件
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("3.2", "进入游戏"); //输出消息日志
}
}).setNegativeButton("退出", //为“退出”按钮添加单击事件
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("3.2", "退出游戏"); //输出消息日志
finish(); //结束游戏
}
}).show(); //显示对话框
}
});
frameLayout.addView(text2); //将text2添加到布局管理器中
运行本实例,将显示如图3.2所示的运行结果。