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");

其他(感悟、思考等)

  • 本次实验让我认识到课本知识是非常重要的,学好例子才能够更好地进行拓展。

参考资料