乐读文学

Android从入门到精通

乐读文学 > 科普学习 > Android从入门到精通

第12页

书籍名:《Android从入门到精通》    作者:明日科技




#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所示的运行结果。