20162330 实验四 《Android程序设计》 实验报告

时间:2022-09-16 14:00:33

2016-2017-2 实验报告目录:   1   2   3   4   5


20162330 实验四 《Android程序设计》 实验报告

 课程名称:《程序设计与数据结构》

 学生班级:1623班

 学生姓名:刘伟康

 学生学号:20162330

 实验时间:2017年5月22日—2017年5月26日

 实验名称:《Android程序设计》

 指导老师:娄嘉鹏、王志强老师

主目录



实验内容:

  • 1.Android Stuidio的安装测试: 参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十四章:

  • 2.Activity测试: 参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十五章:

  • 3.UI测试: 参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十六章:

  • 4.布局测试: 参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十七章:

  • 5.事件处理测试: 参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十八章:

实验要求:

  • 1.在Android Studio中文社区或者Google Developers 中国网站下载Android Studio

  • 2.完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导

  • 3.严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施;

【返回目录】

实验步骤:

  • 1.安装 Android Stuidio(注意环境配置)(详见安装教程)
    完成Hello World, 要求修改res目录中的内容,Hello World后要显示自己的学号
    学习Android Stuidio调试应用程序

  • 2.Activity测试:构建项目,运行教材相关代码
    创建 ThirdActivity, 在ThirdActivity中显示自己的学号,修改代码让MainActivity启动ThirdActivity

  • 3.UI测试:构建项目,运行教材相关代码
    修改代码让Toast消息中显示自己的学号信息

  • 4.布局测试:构建项目,运行教材相关代码
    修改布局让P290页的界面与教材不同

  • 5.事件处理测试:构建项目,运行教材相关代码

  • 6.实验报告中统计自己的PSP(Personal Software Process)时间

前期准备:

  • 预先安装好Android Studio,并完成环境配置,要注意Android SDK的安装位置。
    安装时遇到这种情况,先点击Cancel,在安装成功之后再配置SDK的位置:
    20162330 实验四 《Android程序设计》 实验报告
    20162330 实验四 《Android程序设计》 实验报告

  • 安装完成后点击Start a new Android Studio project创建一个新的Android项目,之后基本上一路next就可以了。(注意包名和域名)
    20162330 实验四 《Android程序设计》 实验报告

  • 在此介绍一下其他的选项:
    1.Open an existing Android Studio Project:打开已有的Android Studio项目。在经历一段时间的学习后,如果你想继续编辑之前的项目,或者打开一个从网上下载的例子,你可以点击此选项。
    2.Check out project from Version Control:从版本控制库中获取项目。对于团队开发来说,版本控制是必不可少的工具。此选项允许你从GitHub、Google Cloud以及TortoiseSVN等处同步项目。事实上,Android Studio对于这些版本控制工具的支持也是很好的,你可以在设置中进行设定。
    3.Import project(Eclipse ADT, Gradle, etc.):导入其他开发环境中的项目。通过该选项你可以将在Eclipse等处生成的项目迁移到Android Studio的开发环境中。
    4.Import an Android code sample:导入Android代码样例。该功能将从Google及其合作伙伴那里读取示例的列表,你可以下载并查看一些优秀的项目并继续编辑它们。

需求分析:

  • 1.需要掌握res目录中的大致内容;

  • 2.需要学会如何修改输出语句;

  • 3.需要初步了解如何添加按钮等功能;

  • 4.需要对布局文件、类文件、清单文件有大致的认识;

【返回目录】

代码实现及解释:

目录文件及关键类解释:

  • src目录:该目录存放Android应用程序所有的源代码。该目录中包含了不同的包,包中对应开发的源程序。
    20162330 实验四 《Android程序设计》 实验报告

  • res资源目录:该目录下定义了drawable、layout、menu和values目录。
    20162330 实验四 《Android程序设计》 实验报告
    20162330 实验四 《Android程序设计》 实验报告

  • drawable目录:该目录下什么都没有,不过如果是用Eclipse的话,应该是有drawable-hdpi、drawable-ldpi、drawable-mdpi 3个文件夹分别用来存放不同分辨率的图片资源,由于不同分辨率手机的开发。

  • layout目录:该目录下包含了所有使用xml格式的界面布局文件。一般一个用户界面调用一个布局文件。

  • mipmap目录:用于存放原生图片(应该只有png格式的文件可以显示出来),缩放上有性能优化,可以将其作为App图标。

  • values目录:该目录包含了使用xml格式的参数描述文件,可以在此添加一些额外的资源如字符串(string.xml)、颜色(color.xml)和数组(arrays.xml)等。主要用于在代码中通过R类来调用它们,这样就可以将代码和资源分开管理,便于维护。

  • manifests文件中的AndroidManifest.xml文件:它是Android项目的配置文件,在程序中定义的四大组件都需要在这个文件里注册。另外还可以在这个文件中给应用程序添加权限声明、安全控制等,也可以指定程序最低兼容版本和目标版本。

  • R类的解释:
    20162330 实验四 《Android程序设计》 实验报告
    【补充】R类中包含了应用中用户界面、图像、字符串等各种资源与之相对应的资源编号(id),这些资源编号都是系统自动生成的,即有一个资源对象。系统就为此在R类中生成相应的资源编号,好比一本字典。在Eclipse中gen文件夹目录会存放ADT插件自动生成的R.java文件。在Android应用程序中没有使用到的资源就不会编译进去,为手机应用程序节省空间。

  • Activity类中的活动生命周期:
    20162330 实验四 《Android程序设计》 实验报告
    【注意】OnCreate和OnDestroy方法只能调用一次,其余方法可调用多次。

测试代码(在这里不展示全部具体的代码了,只针对关键代码加以解释)

  • 1.HelloWorld测试:

    只需要在布局文件中的TextView中修改文本Text即可,代码如下:

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/helloworld_n_t20162330"
        android:textAppearance="@style/TextAppearance.AppCompat.Display2"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />

    还可以在Design中修改位置及字体:
    20162330 实验四 《Android程序设计》 实验报告
    20162330 实验四 《Android程序设计》 实验报告

  • 最后的运行结果如下:
    20162330 实验四 《Android程序设计》 实验报告

  • 学习Android Stuidio调试应用程序:如同IDEA中的一样,可以设断点进行调试,也可以通过点击 Run --> Attach debugger to Android process 进行调试(使用这种方法我还并没有找到要调试的进程)
    20162330 实验四 《Android程序设计》 实验报告
    20162330 实验四 《Android程序设计》 实验报告
    20162330 实验四 《Android程序设计》 实验报告

  • 2.Activity测试:

    关键类ThirdActivity类代码如下:

    public class ThirdActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_third);
        Intent intent = getIntent();
        String message = intent.getStringExtra("message");
        ((TextView) findViewById(R.id.textView1)).setText(message);
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
    }

    布局文件和清单注意一下一些关键词条的理解,与教材相对应,按照教材敲一遍,修改代码让MainActivity启动ThirdActivity(重写一些方法),之后运行成功:
    20162330 实验四 《Android程序设计》 实验报告

  • 3.UI测试:

    修改代码让Toast消息中显示自己的学号信息,建议按照教材先大致理解BasicComponents项目,并尝试运行:
    20162330 实验四 《Android程序设计》 实验报告

  • Toast的内容教材上讲得比较零碎,需要适当拓展学习,我的Toast中MainActivity代码如下:

    public class MainActivity extends Activity {
    private Button m_btn;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        m_btn = (Button) findViewById(R.id.analyseBtn);
        m_btn.setOnClickListener(analyseCalc);
    }
    
    private Button.OnClickListener analyseCalc = new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {
            Toast.makeText(MainActivity.this, "Hello 20162330", Toast.LENGTH_SHORT).show();
        }
    };
    }

    布局文件和清单注意一下一些关键词条的理解,运行结果如下:(点击灰色长条,会显示下方的学号信息)
    20162330 实验四 《Android程序设计》 实验报告

  • 4.布局测试:

    这个任务比较简单,复制教材中的代码,之后只需修改布局文件的Text或者直接在Design界面中修改布局即可。
    修改Save按钮的位置代码如下:

    <Button
        android:id="@+id/saveButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Save"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />

    可以对比原来的属性:

    <Button
        android:id="@+id/saveButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Save"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />

    发现由原来的水平位置变换为现在的右侧边缘End处,运行结果如下:
    20162330 实验四 《Android程序设计》 实验报告

  • 5.事件处理测试:

    只需运行教材中相关代码即可,注意changeColor方法调用了在setBackgroundColor方法中的多种背景颜色:

     public void changeColor(View view) {
        if (counter == colors.length) {
            counter = 0;
        }
        view.setBackgroundColor(colors[counter++]);
    }

    预定义的颜色如下:

       int counter = 0;
       int[] colors = {Color.BLACK, Color.BLUE, Color.CYAN, Color.DKGRAY, Color.GRAY,
            Color.GREEN, Color.LTGRAY, Color.MAGENTA, Color.RED, Color.WHITE, Color.YELLOW};

    运行时,点击切换还有微弱的声音:
    20162330 实验四 《Android程序设计》 实验报告
    20162330 实验四 《Android程序设计》 实验报告

【返回目录】

测试过程及遇到的问题:

  • 1.运行时显示R类缺失,无法找到R类等错误。

    20162330 实验四 《Android程序设计》 实验报告

  • 解决办法:通过搜索,我查找到一些解决方法,尝试一下:
    首先要注意下方运行出现的错误提醒,我这个明显是布局的问题,wrap_parent 这个界面宽度及高度的属性元素在这里不允许被定义,于是我将其改为match_parent即可,有的时候如果该属性没有太大的影响也可以直接删掉。
    20162330 实验四 《Android程序设计》 实验报告
    20162330 实验四 《Android程序设计》 实验报告
    之后需要重建项目,可以先Clean一下在重建,也可以直接重建:
    20162330 实验四 《Android程序设计》 实验报告
    之后便可运行成功,有的时候通过这种方法还是会弹出无法找到R类的错误,建议直接重新创建一个项目即可,有时还要注意SDK的版本,可能也会有影响:
    20162330 实验四 《Android程序设计》 实验报告

  • 2.运行时显示缺少intent过滤器。

    20162330 实验四 《Android程序设计》 实验报告

  • 解决办法:我先查看了一下清单中的intent-filter框架,这个框架规定了程序从哪里开始运行,从哪里结束,然而此框架并没有出现问题:

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
    
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

    于是我去问了张旭升以及王志强老师,了解到这个程序是由两个类构成的,就如同Java中的main函数一样,只有运行App时才相当运行了整体,而我运行的只是其中的一个类,即一部分,缺少结束的指令或者其他成分,所以运行错误,只需要将运行程序修改为App即可:
    20162330 实验四 《Android程序设计》 实验报告
    20162330 实验四 《Android程序设计》 实验报告

  • 3.在每次运行后都会弹出一个错误,运行成功时也有弹出,显示E/EGL_emulation error

    20162330 实验四 《Android程序设计》 实验报告

  • 解决办法:搜索并询问王志强老师,只需修改模拟器管理器中的Graphics即可:
    20162330 实验四 《Android程序设计》 实验报告
    20162330 实验四 《Android程序设计》 实验报告

  • 4.虚拟机的配置分的太大导致运行失败。

    20162330 实验四 《Android程序设计》 实验报告

  • 解决办法:(搜索)
    首先要找到AVD的安装路径,找到xxx.avd目录下的congfig.ini就是模拟器设备的配置文件,找到 hw.ramSize=1536hw 这句,修改ram内存为512hw即可。
    20162330 实验四 《Android程序设计》 实验报告
    我偶然间发现了另外一个解决方法:在Project Properties中也有一个可以修改的内存,如果第一种方法没有成功可以尝试一下这种方法:
    20162330 实验四 《Android程序设计》 实验报告

  • 5.在完成任务时找不到一些类或者一些变量。

    20162330 实验四 《Android程序设计》 实验报告

  • 解决办法:直接根据提示创建相关变量即可,之前的引用menu菜单也需要根据提示创建。
    20162330 实验四 《Android程序设计》 实验报告

  • 6.其他问题(主要和环境配置有关,这类问题我没有遇到,但是可能其他同学会遇到)

  • 【1】Win10环境下如何配置Java JDK系统环境变量:详见这篇图文教程

  • 【2】BIOS界面出错:
    20162330 实验四 《Android程序设计》 实验报告
    解决办法:进入BIOS界面并且启用虚拟化技术(Disabled改为Enabled即可):
    20162330 实验四 《Android程序设计》 实验报告
    (以上两张图片来自高其学长的博客

【返回目录】

分析总结:

  • 对于本周的实验,基本上是一部分新的内容,但仍然需要一定的Java基础,所以说知识是触类旁通的。在安装Android Studio的过程中,也是尝试了多次,之前几次一直是因为创建新项目时进度条总是处于加载状态,并且今天重装了配置好,明天打开发现又长时间处于加载状态。所以就反复重装了几次,现在应该没问题了。

  • 本次我在任务二、任务三中花费时间较长,在完成任务二的时候,我多次复制了教材上的代码,并进行适当修改,但是运行时仍然出现多个错误。于是只好硬着头皮敲了一遍基本不太懂的代码,最后运行成功了,而且还发现自己渐渐理解了一些词条的含义,也许这就是做中学的感觉,在每次接触新内容时就会明显体会到。不过还是有一些内容并不熟悉,也希望老师可以讲解一下如何使用Android Stuidio调试应用程序。

  • 本次实验让我学习到不少Android开发的内容。多实践,就会在不经意间理解曾经不太懂的东西。

    20162330 实验四 《Android程序设计》 实验报告

PSP(Personal Software Process)时间统计:

  • 步骤 耗时 百分比
    需求分析 40min 11%
    设计 40min 11%
    代码实现 120min 33%
    测试 60min 17%
    分析总结 100min 28%

【返回目录】

参考资料:

【返回目录】

20162330 实验四 《Android程序设计》 实验报告的更多相关文章

  1. 实验四 Android程序设计 实验报告

    实验四 Android程序设计 实验报告 目录 代码托管地址 Android程序设计-1 Android程序设计-2 Android程序设计-3 Android程序设计-4 Android程序设计-5 ...

  2. 20155326 实验四 Android程序设计实验报告

    20155326 实验四 Android程序设计实验报告 实验内容 1.基于Android Studio开发简单的Android应用并部署测试; 2.了解Android.组件.布局管理器的使用: 3. ...

  3. 20165230 《Java程序设计》实验四 Android程序设计实验报告

    20165230 <Java程序设计>实验四 Android程序设计实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: 指导 ...

  4. 20162325金立清 实验四 Android程序设计 实验报告

    实验四 Android程序设计 实验报告 代码托管地址 码云链接 实验内容 安装使用Android Stuidio Activity测试 UI测试 布局测试 事件处理测试 Android程序设计-1 ...

  5. 实验四 Android程序设计 实验报告 20162305李昱兴

    实验四 Android程序设计 实验报告 20162305李昱兴 一.Android Studio的安装测试 1.有关该软件 Android Studio,是基于Itellij IDEA的一款流行的I ...

  6. 20172302《程序设计与数据结构》实验四Android程序设计实验报告

    课程:<程序设计与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年5月30日 必修/选修: 必修 1.实验内容 (1)And ...

  7. 20155328 实验四 Android程序设计 实验报告

    20155328 实验四 Android程序设计 第24章 初识Android 提交点1:完成HelloWorld并显示自己的学号 安装Android Studio后,创建了属于自己的Project( ...

  8. 2016-2017-2 20155312 实验四Android程序设计实验报告

    遇到的问题及解决过程 「问题1」Android Studio-R文件出错 解决:参考Android Studio-R文件错误的解决办法步骤如下: 第一步:检查xml文件,R文件错误通常是由于我们的xm ...

  9. 第十四周实验报告:实验四 Android程序设计

    20162317袁逸灏 第十四周实验报告:实验四 Android程序设计 实验内容 Android Studio 实验要求 学会使用Android Studio 学习 活动 以及相关知识内容 学习 U ...

  10. 实验四 Android程序设计

    20155224 实验四 Android程序设计 实验报告 实验报告封面: 课程:Java程序设计 班级:1652班 姓名:王高源 学号:20165225 指导教师:娄嘉鹏 实验日期:2018年5月1 ...

随机推荐

  1. 在 linux(ubuntu) 下 安装 LibSVM

    原文:http://blog.csdn.net/rav009/article/details/12995095 在安装LibSVM前需要先装 python 和 gnuplot linux 一般都自带了 ...

  2. 为GCD队列绑定NSObject类型上下文数据-利用&lowbar;&lowbar;bridge&lowbar;retained&lpar;transfer&rpar;转移内存管理权-备

    下面评论的好友“@Jim”给了种新的思路,就是在清除context的函数里面,用“_bridge_transfer”转换context,把context的内存管理权限重新交给ARC,这样,就不用显式调 ...

  3. HDU 4411 Arrest

    http://www.cnblogs.com/jianglangcaijin/archive/2012/09/24/2700509.html 思路: S->0 流量为K费用0 0->i 流 ...

  4. 使用CSS3中的input标签与lable标签组合实现banner图的切换

    在做网页时,我们经常可以碰到banner图的切换.对于那些JS薄弱的同学来说,这就很尴尬了.今天,我来告诉大家如何使用CSS做出banner图切换的效果. 这里,用到了lable标签与input的组合 ...

  5. &lbrack;ExtJS5学习笔记&rsqb;第二十九节 sencha ext js 5&period;1&period;0中动态更换皮肤主题

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/42016107 本文作者:sushengmiyan ------------------ ...

  6. luogu P1250 种树

    我来总结一下最常用的两种办法 1.贪心 2.差分约束 那么我们先来讲,贪心版<种树> 大家可能知道有一个题和这个类似,那个是钉钉子而这个是种树 我们可以借用钉钉子的思路来想,首先这个是让你 ...

  7. opencv学习之路(26)、轮廓查找与绘制(五)——最小外接矩形

    一.简介 二.轮廓最小外接矩形的绘制 #include "opencv2/opencv.hpp" using namespace cv; void main() { //轮廓最小外 ...

  8. 机器学习&colon;K-Means&sol;K-Means&plus;&plus;

  9. 解决VS2010使用mscomm控件无法接收数据的问题

    如果你正在使用2010,并且想用mscomm控件,遇到如下问题,那你可以看看这篇文章: 1. 添加了mscomm控件以及对应的控件变量以后发现以前mscomm的成员函数,类似setsettings() ...

  10. MYSQL多行合并成一行多列

    ), VALUE )) INSERT INTO # VALUES (,,'), (,,'), (,,'), (,,'), (,,'), (,,'), (,,') SELECT code,MIN(nam ...