全部博文(436)
分类: LINUX
2011-03-30 22:12:51
第四次报告
研究题目:Android手机游戏开发
小组成员:李安 李想
本周计划:
完成手机页面的转换、传输、实现一个测试身高体重的小实例
实验内容:
一、 setContentView的应用——实现手机页面转换
在网页中,实现两个网页的转换,利用超链接(HyperLink)就可以实现,但是在手机的世界里,要想实现页面转换,就需要改变Activity的Layout1和Layout2。
我们通过在Layout1和Layout2中各创建一个按钮,单击后可以切换到彼此界面。
运行结果:
主程序
关于程序说明:
这个主程序中,预加载的Layout是main.xml,屏幕上显示的是黑色背景的“This is Layout 1!!”,在第一个Layout上的按钮被点击的同时,改变Activity的Layout为mylayout.xml,屏幕上显示变为白色背景的 “This is Layout 2!!”,并利用Button点击时,调用方法的不同做两个Layout间的切换。
为了凸显Layout间切换的效果,特别改变两个Layout的背景色及输出文字。在main.xml中定义其背景色为黑色,输出文字为“This is Layout 1!!”。
在mylayout.xml中定义其背景色为白色,输出文字为“This is Layout 2!!”。
拓展分析:
所有的Activity(包括这个Page)都必须实例Activity的抽像方法OnCreate();因为Activity是抽象类,而onCreate又是抽像方法,所以必须实现,填完整这个方法,在里面写点东西, 一般都是生成一些,按钮,菜单,图片,文字等进行界面的初始化。
etContentView(R.layout.main): R.layout.main是个布局文件即控件都是如何摆放如何显示的,setContentView就是设置一个Activity的显示界面,这句话就是设置这个这句话所再的Activity采用R.layout下的main布局文件进行布局
这个程序其实跟上周我们做的Button事件处理有很大关联。在那个范例中只有一个按钮,但其实不仅在Activity里可以布局数个按钮(即在Layout里多配置一些按钮对象),也可以布局几个Layout来实现更多操作。
不足:
运用切换Layout的方式仅实现了背景、颜色及文字内容的转换。并不能实现Activity的置换。
二.不同Activity之间的数据传递
首先要学会如何在Activity中调用另一个Activity,而需要在额外调用一个Activity的同时传递数据,需要利用android.os.Bundle对象封装数据的能力,将欲传递的数据或参数,通过Bundle来传递不同Intent之间的数据。
例子:通过输入性别身高,取得Button对象,将要传递的数据发送,在另一方接收。
原理:在Activity1中收集User输入的数据,在离开Activity1的同时,将User选择的结果传递至下一个Activity2
运行结果:
算法:
主程序:
Activity1:
在第一个Activity1主程序中,定义了“性别”选项的RadioGroup以及输入身高的“EditText”,并运用Intent及Bundle对象,在调用Activity2(EX03_10_1)时,同时将数据传入。
要如何解决Activity控制权的移交,可在主程序里使用startActivity() 这个方法来调用另一个Activity。当中的关键是 Intent这个特有的对象,它会在主Activity当中,告诉程序自己是什么,并想要前往哪里,这样能实现两个Activity的转换。
Activity2:
在Activity1是以 Bundle封装对象,在Activity2亦是以Bundle的方式解开封装的数据;程序中以getIntent().getExtras() 方法取得随着Bundle对象传递过来的性别与身高,经过计算之后,显示在屏幕上。
本周小结:
有关手机页面的转换,掌握是很必要的,因为每一次刷新页面、每前进一步都需要这个操作。在读相关程序的时候不太理解Activity类,因为看到很多子类都是继承它的。后来查阅了一些关于Activity的资料。知道了每个Activity都需要一个类来继承。看到论坛里的解答有一个很生动,说可以把Activity理解成一个应用场景,如果你想像成web网页,那么它就是一个页面。多个activity之间可以跳转,就像网页之间相互跳转一样。
还有就是关于不同Activity之间的数据传递。掌握了它就能激活程序按照相应的算法运行。在我们做的这个例子中,只是实现了字符串的传入,其实Bundle对象针对不同的数据类型还提供了许多的方法。并且读数据的时候也有相应的Bundle.getString(stringName)、Bundle.getDouble(doubleName)等方法。
我们可以基本跟着书上的例子运行下来,但有一些程序实现的语句不能完全理解,有的小的拓展就只能照葫芦画瓢,不能理解其真正的实质,我想我们还需要多多的去读程序,来一点点的理解每一个函数的意义。
下周计划:我们要更深入的去了解交互式通信服务与手机控制,比如拨打电话这一基本功能。
参考资料:
Android activity类
http://blog.csdn.net/chenzhp/archive/2009/10/25/4726910.aspx
2.CSDN社区-移动平台-Android
3.Android setContentView的应用
4. OnClickListener接口简介
5. Android基础教程(六)之------- 参数的传递(Bundle)
http://archive.cnblogs.com/a/1959784/