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的位置:

  • 安装完成后点击Start a new Android Studio project创建一个新的Android项目,之后基本上一路next就可以了。(注意包名和域名)

  • 在此介绍一下其他的选项:
    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应用程序所有的源代码。该目录中包含了不同的包,包中对应开发的源程序。

  • res资源目录:该目录下定义了drawable、layout、menu和values目录。

  • 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类的解释:

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

  • Activity类中的活动生命周期:

    【注意】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中修改位置及字体:

  • 最后的运行结果如下:

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


  • 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(重写一些方法),之后运行成功:

  • 3.UI测试:

    修改代码让Toast消息中显示自己的学号信息,建议按照教材先大致理解BasicComponents项目,并尝试运行:

  • 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();
        }
    };
    }

    布局文件和清单注意一下一些关键词条的理解,运行结果如下:(点击灰色长条,会显示下方的学号信息)

  • 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处,运行结果如下:

  • 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};

    运行时,点击切换还有微弱的声音:

【返回目录】

测试过程及遇到的问题:

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

  • 解决办法:通过搜索,我查找到一些解决方法,尝试一下:
    首先要注意下方运行出现的错误提醒,我这个明显是布局的问题,wrap_parent 这个界面宽度及高度的属性元素在这里不允许被定义,于是我将其改为match_parent即可,有的时候如果该属性没有太大的影响也可以直接删掉。


    之后需要重建项目,可以先Clean一下在重建,也可以直接重建:

    之后便可运行成功,有的时候通过这种方法还是会弹出无法找到R类的错误,建议直接重新创建一个项目即可,有时还要注意SDK的版本,可能也会有影响:

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

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

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

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

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

  • 解决办法:搜索并询问王志强老师,只需修改模拟器管理器中的Graphics即可:

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

  • 解决办法:(搜索)
    首先要找到AVD的安装路径,找到xxx.avd目录下的congfig.ini就是模拟器设备的配置文件,找到 hw.ramSize=1536hw 这句,修改ram内存为512hw即可。

    我偶然间发现了另外一个解决方法:在Project Properties中也有一个可以修改的内存,如果第一种方法没有成功可以尝试一下这种方法:

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

  • 解决办法:直接根据提示创建相关变量即可,之前的引用menu菜单也需要根据提示创建。

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

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

  • 【2】BIOS界面出错:

    解决办法:进入BIOS界面并且启用虚拟化技术(Disabled改为Enabled即可):

    (以上两张图片来自高其学长的博客

【返回目录】

分析总结:

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

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

  • 本次实验让我学习到不少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. hdu2242 考研路茫茫——空调教室

    弱联通 #include<iostream> #include<cstdio> #include<cstring> #include<map> #inc ...

  2. 修复TortoiseGit文件夹和文件图标不显示

    原文:http://blog.moocss.com/tutorials/git/1823.html 一. 我的运行环境: 操作系统 Windows 7/8 32bit TortoiseGit (1.7 ...

  3. Git资料整理

    一.Git知识 1. Git入门 2. Pro Git 3. 廖雪峰的官方网站 4. 下载地址 二.GitHub 三.Git客户端 1. TortoiseGit 下载地址 Git和TortoiseGi ...

  4. 巨幅SQL优化(SQL Tuning)——秒杀十几个小时不出结果的SQL

    今天接到用户的需求,某程序十几个小时没出结果了,很纳闷儿,于是让相关人员取了explain plan等信息,拿到explain plan后,搂一眼,就知道问题出在了哪里,explain plan跑偏了 ...

  5. CSS3 column属性

    css3 column属性的应用 1.案例源码 <!DOCTYPE html><html lang="en"><head> <meta c ...

  6. Jmeter_从jdbc请求的响应中获取参数做关联

    在之前的文章-参数关联中,留个一个小尾巴,这里补充一下 http://www.cnblogs.com/Zfc-Cjk/p/8295495.html 1:从sql表中将需要取的数据查出来 2:我们需要把 ...

  7. 【HDU1711】Number Sequence

    题面 大致题意: 给定两个数列A,B,长度分别为N和M 求出 满足 Ak=B1 ,Ak+1=B2......Ak+M-1=Bm 的最小k值 如果有多个k值输出最小的一个 题解 KMP裸题 直接计算B数 ...

  8. [POI2014]KUR-Couriers

    题意 给一个数列,每次询问一个区间内有没有一个数出现次数超过一半 题解 主席树,一个数出现次数>一半,这个区间内只有这一个数满足,那么主席树直接维护所有数的出现次数,直接在树上二分查询 # in ...

  9. 打造MacOS版“XShell”

    1.背景 XShell作为一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议.作为server端开发,几乎是必备工具了. 很多刚 ...

  10. DOM节点类型

    DOM1级定义了一个Node接口,该接口将由DOM中的所有节点类型实现.这个Node接口在JavaScript中是作为Node类型实现的:除了IE外,在其他所有浏览器中都可以访问到这个类型.JavaS ...