20182301 2019-2020-1 《数据结构与面向对象程序设计》实验5报告
课程:《程序设计与数据结构》
班级: 1823
姓名: 赵沛凝
学号:20182301
实验教师:王志强
实验日期:2019年9月16日
必修/选修: 必修
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 stdio
- 一路next直到遇见如下图:不需要设置什么,直接取消
- 下面是一些基本设置以及下载
- 选择手机尺寸
- 下载手机配置
- 修改代码中的一些东西:
第二个
-
小总结:Activity类定义的回调事件有:
- onCreate():当Activity首次被创建时会调用它
- onStart():当Activity对于用户来说变为可视状态时会回调此方法
- onResume():当用户开始与应用交互时会调用此方法
- onPause():当前的Activity正在暂停中,并且先前的Activity正在恢复时,被暂停的这个Activity不会再接收用户的输入,也不再执行任何代码和调用
- onStop():当Activity不再为可视状态时会调用该回调方法
- onDestroy():该方法会在Activity被系统销毁前被调用
- onRestart():当Activity在被停止后重新启动时,会调用该回调方法
-
在AndroidManifest.xml中新建一个ThirdActivity窗口,添加完后要有后缀代码,添加窗口的代码如下
<activity android:name=".ThirdActivity"></activity>
- 新建ThirdActivity,如图:
- 根据实际要求"在ThirdActivity中显示自己的学号,修改代码让MainActivity启动ThirdActivity"和书上已有代码进行修改activity_main;activity_third
- 修改MainActivity.java
@Override
public void onClick(View v) {
Intent intent = new Intent(
MainActivity.this, SecondActivityDemo.class); // 创建一个Intent对象
startActivity(intent);
}
- 结果如图:
第三个
这个实验较为简单,修改如下两个代码:
- MainActivity
- activity_main
结果如图:
第四个
- 修改布局,可以在多个方面:颜色、大小、字体,我仅仅修改了位置和字体内容。代码如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="2dp"
android:paddingRight="2dp">
<Button
android:id="@+id/cancelButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="89dp"
android:text="20182301" />
<Button
android:id="@+id/saveButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="zhaopeining"
android:layout_below="@+id/cancelButton"
android:layout_alignLeft="@+id/cancelButton"
android:layout_alignStart="@+id/cancelButton"
android:layout_marginTop="23dp" />
<ImageView
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginTop="45dp"
android:padding="4dp"
android:src="@android:drawable/ic_btn_speak_now"
tools:srcCompat="@tools:sample/avatars[8]" />
<LinearLayout
android:id="@+id/filter_button_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:gravity="center|bottom"
android:background="@android:color/white"
android:orientation="horizontal" />
<Button
android:id="@+id/filterButton"
android:layout_width="172dp"
android:layout_height="61dp"
android:layout_alignEnd="@+id/saveButton"
android:layout_alignParentBottom="true"
android:layout_marginEnd="89dp"
android:layout_marginBottom="107dp"
android:text="Filter" />
<Button
android:id="@+id/shareButton"
android:layout_width="169dp"
android:layout_height="65dp"
android:text="Share" />
<Button
android:id="@+id/deleteButton"
android:layout_width="225dp"
android:layout_height="75dp"
android:layout_alignEnd="@+id/filterButton"
android:layout_centerVertical="true"
android:text="Delete" />
</RelativeLayout>
代码结果:
第五个
该实验仅是运行书上代码,结果如图:
3. 实验过程中遇到的问题和解决过程
- 问题1:新建new module 时出现“Project needs to be converted to androidx.* dependencies”如下图:
- 问题1解决方案:
- 方法一:把整个项目升级到AndroidX
- 方法二:项目不升级到AndroidX
- gradle.properties下添加如下,然后点一下右上角Sync Now
android.useAndroidX=true
android.enableJetifier=true
- 新建module_test,这时就没有“Project needs to be converted to androidx.* dependencies”,File——New——New Module——Android Library(Next)——填好信息后Finish
- 把module_test的build.gradle——dependencies下引入的androidX包改成android的,如果不知道怎么改,就从原先的module对应的build.gradle里拷贝过来
- 在步骤一种添加的改成false
android.useAndroidX=false
android.enableJetifier=false
- 问题2:从一个应用的activity跳转到另一个应用的activity,应该怎么办?
- 问题2解决方案:
- 只要包名设置对了,直接调用intent就可以跳转
要跳转的activity的exported属性设置为true
Intent intent = new Intent();
ComponentName cn = new ComponentName("com.corp.timetest","com.corp.timetest.LoginActivity");
intent.setComponent(cn);
或者设置className,取代设置componentName:
intent.setClassName("com.landicorp.packname.test", "com.landicorp.packname.test.secondpkg.jump.TaskAffinityTestActivity");
其他(感悟、思考等)
- 本次实验让我认识到课本知识是非常重要的,学好例子才能够更好地进行拓展。