20182311 2019-2020-1 《数据结构与面向对象程序设计》实验五报告 |
课程:《程序设计与数据结构》
班级: 1823
姓名: 冷冲
学号:20182311
实验教师:王志强
实验日期:2019年10月16日
必修/选修: 必修
1.实验内容
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调试应用程序
2.Activity测试
参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十五章:
构建项目,运行教材相关代码
创建 ThirdActivity, 在ThirdActivity中显示自己的学号,修改代码让MainActivity启动ThirdActivity
3.UI测试
参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十六章:
构建项目,运行教材相关代码
修改代码让Toast消息中显示自己的学号信息
4.布局测试:
参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十七章:
构建项目,运行教材相关代码
修改布局让P290页的界面与教材不同
5.事件处理测试:
参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十八章:
构建项目,运行教材相关代码
提交代码运行截图和码云Git链接,截图要有学号水印,否则会扣分
2. 实验过程及结果
1.测试Android,显示Helloworld+学号:只需要修改主活动xml文件里的text内容为学号。
2.测试Activity,创建ThirdActivity打印学号:这里主要用到了监听器和意图来实现由一个活动调用另一个活动并传递数据,以及onTouch方法控制调用的开始。需要注意的是每增加一个主活动以外的活动都需要在清单中进行活动注册,注册的内容与主活动的类似,主活动比其他活动多了意图过滤器实现整个app的入口。
3.测试UI组件:直接在主活动中添加
public void onClick(View v){
Toast.makeText(MainActivity.this,"20182311",Toast.LENGTH_SHORT).show();
}
4.测试布局:主要使用了RelativeLayout和LinearLayout的混合使用。挨个调一下每个属性,试着从devise界面快捷操作,或者在xml文件里敲代码,最后调出结果。需要注意的是,直接拖出来的控件没有constraint,需要自己设置。而且很多情况下由于布局原因,手动拖拽不一定能起作用,针对布局的调整最好还是使用xml文件进行修改。
5.事件处理测试:主要学习了监听器的实现和onClick()等方法来处理一个事件。可以直接为一个控件绑定一个onClick来调用某个方法,这是快捷操作,也可以实现view.OnTouchListener接口来控制触碰事件。
3. 实验过程中遇到的问题和解决过程
- 问题1:启动虚拟设备时,出现提示Error:Not enough disk space to run AVD
- 问题1解决方案:模拟器路径下的avd文件夹就是用来存放模拟器镜像文件的,将该文件夹放入空间足够的磁盘,修改xxx.ini模拟器配置文件内的安装路径。重新运行模拟器。
- 问题2:通过一个活动启动另一个活动的方法?
- 问题2解决方案:使用Intent(意图)完成“跳转”。首先,在原活动onCreate()方法对textview文本框绑定监听器setOnTouchListener,复写onTouch(),在onTouch()中使用startActivity(intent)完成对另一个活动的调用。再在被启动的活动的onCreate()方法中添加对应方法接收信息。
Intent(目的、意图)是一种运行时绑定机制(runtime binding),他能在程序运行的过程中连接两个不同的组件,可以应用程序内部的activity、server、broadcastreceive之间。通过Intent,程序可以向Android表达某种请求或意愿,Android会选择相应的组件来答复。
- 我们可以通过:
startActivity(Intent)/startActivityForResult(Intent):来启动一个Activity
startService(Intent)/bindService(Intent):来启动一个Service
sendBroadcast:发送广播到指定BroadcastReceiver - 显示Intent和隐示Intent:
显示Intent通过组件名指定启动的目标组件
隐示Intent不指定组件名,指定Intent的Action,Data,或Category,启动组件时,自动匹配AndroidManifest.xml相关组件的Intent-filter
使用putExtra()和getStringExtra()方法完成数据传输 - 问题3:LinearLayout和RelativeLayout?
- 问题3:LinearLayout(线性布局)和RelativeLayout(相对布局)是安卓常用的两种布局方式,可以混合使用。简要学习了这两种布局的用法,比如为控件设置ID,可以通过访问ID调整两个控件之间的相对位置。线性布局是根据页面来的,基本有垂直、水平、顶端、底部等方式。
- andoird五大布局简要介绍(更具体的布局属性查看参考资料第三条):
- 问题4:xml文件中出现错误:Multiple root tags(多标签)
- 问题4解决方案:发现是结束的标签结束代码处的/> 与 >出了问题。需要一一对应。
- 问题5:什么是View.findViewById()?R.id.xxx?
- 问题5解决方案:findViewByID()字面上能看懂是在所有的View中通过ID查找东西,R是指在一定范围内(包括整个项目)的所有,R.id.xxx指向项目里ID是xxx的东西。
- 问题6:总结一下安卓的安源结构(清单、布局和活动类)
- 问题6解决方案:看了大力博客里的几张图,觉得很好,拿来用用。
其他(感悟、思考等)
为了赶实验很快的浏览了一遍书就开始敲代码,结果浪费了很多时间,也没有完全弄懂。看懂再动手,磨刀不误砍柴工。
参考资料
原文地址:https://www.cnblogs.com/lengchong/p/11721942.html