实验五实验报告
学号 2019-2020-182321 《数据结构与面向对象程序设计》实验五报告
课程:《程序设计与数据结构》
班级: 1823
姓名: 杨凯涵
学号:20182321
实验教师:王志强
实验日期:2019年10月22日
必修/选修: 必修
1.实验内容
- Android Stuidio的安装测试:
参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十四章:
参考http://www.cnblogs.com/rocedu/p/6371315.html#SECANDROID,安装 Android Stuidio
完成Hello World, 要求修改res目录中的内容,Hello World后要显示自己的学号,自己学号前后一名同学的学号,提交代码运行截图和码云Git链接,截图没有学号要扣分
学习Android Stuidio调试应用程序 - Activity测试
参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十五章:
构建项目,运行教材相关代码
创建 ThirdActivity, 在ThirdActivity中显示自己的学号,修改代码让MainActivity启动ThirdActivity - UI测试参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十六章:
构建项目,运行教材相关代码
修改代码让Toast消息中显示自己的学号信息 - 布局测试:参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十七章:
构建项目,运行教材相关代码
修改布局让P290页的界面与教材不同 - 事件处理测试:参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十八章:
构建项目,运行教材相关代码
提交代码运行截图和码云Git链接,截图要有学号水印,否则会扣分
2实验过程及结果
实验一
按照娄老师的博客,安装上Android studio,因为本人此次实验中没有安卓手机,所以下载了一个安卓虚拟机,安卓虚拟机可以在Android studio
的右上角的虚拟机界面中打开下载,这里根据本电脑的情况下载了Nexus5.接着,新建一个module,里面就会直接有一个helloworld的java文件,我们只需要在activity.xml文件处修改text view的内容,就可以输出我们的学号了,activity是整个手机的布局,里面有着控制手机画面显示的元素。运行结果如上图所示。
实验二
首先显示输入书上的代码,运行一番,结果如图所示
点击第一个activity后,会跳入到第二个activity中,这段代码需要两个activity,一个是mainactivity,一个是activity类,它调用了startactivity的方法,可以从一个活动调用到另外一个活动。这两个活动都有一个TextView,当触碰第一个activity的TextView的时候,我们就可以马上跳转到第二个活动当中。输出第二个活动的内容。
按照代码的学习,在主活动中的
intent.puExtra("message","Message from first screen");
的语句中修改其内容,即可输出我们的学号(这段话里的语句是输出到第二个activity中的)
以下为mainactivity的代码
为了处理触碰事件,mainactivity实现了ontouchlistener的接口,并且覆盖了其ontouch方法,在方法中创建了Intent,并且在其中放置一条信息,然后调用第二个活动,调用getIntent并且通过getStringExtra来获得一条信息,然后将信息通过textvie传递给settext方法,调用findviewByld方法来访问TextView。
实验三
Toast只是一个小的对话框,用来一条消息用来作为给用户的反映,到了预定的时间,这个toast就会消失。而Toast不会替代当前的活动,只是占据了一小部分的空间而已。
根绝的实验要求,我们只需要在代码末尾行加入
Toast.makeText(getApplicationContext(),"20182321",Toast.LENGTH_SHORT).show();
即可生成toast消息,里面就会输出我的学号了。
实验四
实验四是布局,为我们的安卓小程序修改其外观,其实这个在我们的实验一和实验二中就接触了,那就是activity文件和layout,通过修改文件里内容,我们可以对程序外观进行布局,或者点击下方的design,这样的布局会更直观。
可以在这里进行自己的设计,来设计我们安卓小程序的外观。
按照书上所说的,对其代码进行更改,可以有多种方法来对布局进行更改
更改后,运行结果如下
实验五
安卓是基于事件的,当发生用户交互时,可能会触发一个事件,当事件被触发时所响应的一行代码的类,就叫做监听器。
如下图是根据书上的代码编写的一个时钟程序,当点击时钟的时候,时钟的颜色就会改变,这就是用到了监听器,我们会先为“时钟”这个按钮部署一个监听器(setclick),当我们点击它的时候,就会触发它所对应的代码,从而调用它的changecolor方法,从而改变时钟的颜色。
接下来我们按照书上代码编写了一个监听器,并实现了它
如下图
当拖动里面的某一颜色块的时候,它会与拖动方向上的颜色块进行交互,每个颜色块都有一个监听器,当用户点击它的时候会触发ontouch方法好几次,ontouch方法在触碰还有拖动以及抬起手的时候都会被调用,而且程序只有一个activity,这是与第一个不同的地方。当用户完成所有的操作步骤之后,颜色就会进行交换,从而实现程序。
3. 实验过程中遇到的问题和解决过程
- 问题1:迷之AS。
- 问题1解决方法:Android studio有时候是一个很迷的软件,出现问题的时候往往会有很多奇葩的解决方法,但是找破脑袋又找不到根本原因.......下面列出几个仅供参考
1.创建虚拟机的时候发现找不到可以下载的虚拟机
一般来说,点开安卓创建虚拟机的按钮都是可以显示出创建虚拟的类型选择的框框,然后把想下载的虚拟机下载下来就好了。
但是本人第一次创建的时候就是啥也没有,一开始以为是漏了什么安装包,正准备重装的时候,结果没想到重新启动一下就好了.......
2.当打开Android studio的时候,会显示出Gradle project sync faild的错误。
上网查阅的时候,网上有很多的说法,一般都说是JDk的版本不够,但是明明前面还是可以编译的........
可是,当我们重新打开一个project的时候,它却又莫名其妙的好了起来............为了探究原因,我已经研究了很久,但是始终没有研究出结果,基于它重新创建一个project就解决了问题,为了避免错误操作导致AS崩溃,我便没有继续追究下去了。
- 问题2:App闪退问题
- 问题2解决方法:这个问题在周一晚上我去找王老师的时候出现,并且当晚也没有找出问题出来......开始的时候我搜集网上的资料,怀疑是manifast文件里的activity没有注册,需要的是绝对路径
<activity
android:name="com.example.myapplication2.MainActivity2"
android:label="@string/app_name"
>
此问题在许多同学的Android studio中出现过,但是很可惜,我的这个问题和这个无关。于是,我根据run里的错误提示,逐行寻找,发现代码出现在以下代码中
setContentView(R.layout.activity_main2);
而app闪退但运行正确一般都是配置文件的问题,所以我找到了activity_main2这个配置文件中,发现有一段关于布局button的配置信息与书本上的有所不同
这段代码之所以不同,是因为我没有书本上里的文件,所以一开始并没有在意,自己随便胡乱设置了一番,我抱着试一试的心态,把这段代码删除掉,结果发现app突然就成功运行了!
可以肯定的是,书本上的代码很有可能是在design里设置好的,而我手打没有设置design,所以没有他们关于botton设置的代码行,而自己胡乱设计选择,则导致配置文件出现了错误,app闪退。
其他(感悟、思考等)
- 安卓的开发实际与idea无意,但是其变得更为复杂,所需要操作的内容也多了起来,不仅仅只是单纯的编程,更像是一个项目的组建,有图像的设计,字符串的编写,等等,这些都让一切变得有趣了起来
- 不能啥时候都想着可以重装,重装有时候更像是逃避问题,逃避问题不能解决问题,善于从网上搜索自己的 疑问,利用debug或者通过尝试修改部分代码来找出问题的所在都是行之有效的方法。
参考资料
《Java程序设计与数据结构教程(第二版)》
《Java程序设计与数据结构教程(第二版)》学习指导