介绍
在 Android 中,支持像 Java Swing 那样完全通过代码控制 UI 界面。也就是所有的 UI 组件都通过 new 关键字创建出来,然后将这些 UI 组件添加到布局管理器中,从而实现用户界面。在代码中控制 UI 界面可以分为以下 3 个关键步骤:
- 创建布局管理器,例如,帧布局管理器、表格布局管理器、线性布局管理器、相对布局管理器和网格布局管理器等,并且设置布局管理器的属性。例如,为布局管理器设置背景图片等
- 创建具体的组件,例如,TextView、ImageView、EditText 和 Button 等任何 Android 提供的组件,并且设置组件的布局和属性
- 将创建的组件添加到布局管理器中。下面我们将通过一个具体的例子来演示如何使用 Java 代码控制 UI 界面
例子
完全通过代码控制 UI 界面,虽然该方法比较灵活,但是其开发过程比较烦琐,而且使得各模
块之间的依赖性提高,进而降低了代码的重用性,因此不推荐采用这种方式控制 UI 界面。
游戏进入界面
1.将默认生成的下面的这行代码删除,在onCreate()方法的上方声明一个TextView组件text1
setContentView(R.layout.activity_test);
public TextView text1;
2.在TestActivity的onCreate()方法中,创建一个帧布局管理器,并为该布局管理器设置背景,关键代码如下:
FrameLayout frameLayout = new FrameLayout(this); //创建帧布局管理器
frameLayout.setBackgroundResource(R.mipmap.bg); //设置背景
setContentView(frameLayout); //设置在Activity中显示frameLayout
3.实例化 text1 组件,设置其显示文字、文字大小、颜色和布局,具体代码如下:
文字如果要设置单位是像素,可以使用常量TypedValue.COMPLEX_UNIT_PX,这些常量可以在Android官方提供的API中找到。
text1 = new TextView(this);
text1.setText("开始游戏"); //设置显示文字
text1.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18); //设置文字大小,单位为SP(缩放像素)
text1.setTextColor(Color.rgb(17, 85, 114)); //设置文字的颜色
FrameLayout.LayoutParams params = new FrameLayout .LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT); //创建保存布局参数的对象
params.gravity = Gravity.CENTER; //设置居中显示
text1.setLayoutParams(params); //设置布局参数
4.实现单击“开始游戏”文本框时,显示询问对话框。具体方法是:为 text1 组件添加单击事件监听器,并在重写的 onClick() 方法中,显示询问对话框,关键代码如下:
text1.setOnClickListener(new View.OnClickListener() { //为text1添加单击事件监听器
@Override
public void onClick(View v) {
//设置对话框的标题
new AlertDialog.Builder(TestActivity.this).setTitle("系统提示")
//设置对话框的显示内容
.setMessage("游戏有风险,进入需谨慎,真的要进入吗?")
.setPositiveButton("确定", //为确定按钮添加单击事件
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("桌面台球", "进入游戏");//输出消息日志
}
})
.setNegativeButton("退出", //为取消按钮添加单击事件
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("桌面台球", "退出游戏"); //输出消息日志
finish(); //结束游戏
}
}).show(); //显示对话框
}
});
5.将文本框组件 text1 添加到布局管理器中
frameLayout.addView(text1); //将text1添加到布局管理器中