介绍

在 Android 中,支持像 Java Swing 那样完全通过代码控制 UI 界面。也就是所有的 UI 组件都通过 new 关键字创建出来,然后将这些 UI 组件添加到布局管理器中,从而实现用户界面。在代码中控制 UI 界面可以分为以下 3 个关键步骤:

  1. 创建布局管理器,例如,帧布局管理器、表格布局管理器、线性布局管理器、相对布局管理器和网格布局管理器等,并且设置布局管理器的属性。例如,为布局管理器设置背景图片等
  2. 创建具体的组件,例如,TextView、ImageView、EditText 和 Button 等任何 Android 提供的组件,并且设置组件的布局和属性
  3. 将创建的组件添加到布局管理器中。下面我们将通过一个具体的例子来演示如何使用 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添加到布局管理器中

java 代码编辑器 html java 代码编辑器ui_单击事件