在代码中控制UI界面(简单例子)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在代码中控制UI界面
在Android中,支持像Java Swing那样完全通过代码控制UI界面。也就是所有的UI组件都通过new关键字创建出来,然后将这些UI组件添加到布局管理器中,从而实现用户界面。
在代码中控制UI界面可以分为以下3个关键步骤。
(1)创建布局管理器,可以是帧布局管理器、表格布局管理器、线性布局管理器和相对布局管理器等,并且设置布局管理器的属性。例如,为布局管理器设置背景图片等。
(2)创建具体的组件,可以是TextView、ImageView、EditText和Button等任何Android 提供的组件,并且设置组件的布局和各种属性。
(3)将创建的具体组件添加到布局管理器中。
下面将通过一个具体的例子来演示如何使用Java代码控制UI界面。
【例】在Eclipse中创建Android项目,名称为3.2,完全通过代码实现游戏的进入界面。
(1)在新创建的项目中,打开src/com/mingrisoft目录下的MainActivity.java文件,然后将默认生成的下面这行代码删除。
setContentView(yout.main);
(2)在MainActivity的onCreate()方法中,创建一个帧布局管理器,并为该布局管理器设置背景,关键代码如下:
1.FrameLayout frameLayout = new FrameLayout(this); // 创建帧布局管理器
2.frameLayout.setBackgroundDrawable(this.getResources().getDrawable(
3.R.drawable.background01)); // 设置背景
4.setContentView(frameLayout); // 设置在Activity中显示frameLayout
(3)创建一个TextView组件text1,设置其文字大小和颜色,并将其添加到布局管理器中,具体代码如下:
1.TextView text1 = new TextView(this);
2.text1.setText("在代码中控制UI界面"); // 设置显示的文字
3.text1.setTextSize(PLEX_UNIT_PX, 24); // 设置文字大小,单位为
像素
4.text1.setTextColor(Color.rgb(1, 1, 1)); // 设置文字的颜色
5.frameLayout.addView(text1); // 将text1添加到布局管理器中
(4)声明一个TextView组件text2,因为在为该组件添加的事件监听中,要通过代码改变该组件的值,所以需要将其设置为MainActivity的一个属性,关键代码如下:
1.public TextView text2;
(5)实例化text2组件,设置其显示文字、文字大小、颜色和布局,具体代码如下:
1.text2 = new TextView(this);
2.text2.setText("单击进入游戏......"); // 设置显示文字
3.text2.setTextSize(PLEX_UNIT_PX, 24); //设置文字大小,单位为
像素
4.text2.setTextColor(Color.rgb(1, 1, 1)); // 设置文字的颜色
youtParams params = new LayoutParams(
youtParams.WRAP_CONTENT,
youtParams.WRAP_CONTENT); // 创建保存布局参数
的对象
8.params.gravity = Gravity.CENTER; // 设置居中显示
9.text2.setLayoutParams(params); // 设置布局参数
注意:在我做这个的时候,上面第5,6,7,8行的代码编写没有达到预期的效果,主要问题是“单击进入游戏......”并没有居屏幕的中间显示,经过多次的实验分析,将5,6,7,8行改成:
5. youtParams params=new youtParams(
6. youtParams.WRAP_CONTENT,
7. youtParams.WRAP_CONTENT);
8.params.gravity=Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL;
(或params.gravity = Gravity.CENTER;也是可以的)。
便成功达到预期的效果。
说明:在通过setTextSize()方法设置TextView的文字大小时,可以指定使用的单位,在上面的代码中,int型的常量PLEX_UNIT_PX表示单位是像素,如果要设置单位是磅,可以使用常量PLEX_UNIT_PT,这些常量可以在Android 官方提供的API中找到。
(6)为text2组件添加单击事件监听器,并将该组件添加到布局管理器中,具体代码如下:
代码位置:光盘\mr\example\第3章\3.2\src\com\mingrisoft\MainActivity.java
1.text
2.setOnClickListener(new OnClickListener() { // 为text2添加单击事件监听器
2.
3.@Override
4.public void onClick(View v) {
5.new AlertDialog.Builder(MainActivity.this).setTitle("系统提示") // 设置对话
框的标题
6..setMessage("游戏有风险,进入需谨慎,真的要进入吗?") // 设
置对话框的显示内容
7..setPositiveButton("确定", // 为确定按钮添加单击事件
8.new DialogInterface.OnClickListener() {
9.
10.@Override
11.public void onClick(DialogInterface dialog, int which)
{
12.Log.i("3.2", "进入游戏"); // 输出消息日志
13.}
14.}).setNegativeButton("退出", // 为取消按钮添加单击事件
15.new DialogInterface.OnClickListener() {
16.
17.@Override
18.public void onClick(DialogInterface dialog,int which)
{
19.Log.i("3.2", "退出游戏"); // 输出消息日志
20.finish(); // 结束游戏
21.}
22.}).show(); // 显示对话框
23.}