[关闭]
@vensli 2018-10-08T12:39:11.000000Z 字数 4159 阅读 1321

中山大学数据科学与计算机学院本科生实验报告

(2018年秋季学期)

课程名称 手机平台应用开发 任课老师 郑贵锋
年级 2016级 专业(方向) 软件工程
学号 16340275 姓名 杨赞
电话 15626405912 Email 269088185@qq.com
开始日期 9月26日 完成日期 10月6日


第四周内容

一、实验题目

基本的UI界面设计

二、实现内容

实现一个Android应用,界面呈现如图中的效果。
此处输入图片的描述

要求


三、课堂实验结果

(1)实验截图

整体界面
此处输入图片的描述

(2)实验步骤以及关键代码

  1. 首先我们要确定我们整体使用的布局,这里需要用到约束布局(ConstraintLayout),在xml页面的最外层可以设置。
  2. 设置标题,使用TextView控件,textSize为20sp,设置居中ayout_gravity="center_horizontal",layout_marginTop为 20sp。

     <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_marginTop="20dp"
        android:text="中山大学智慧健康服务平台"
        android:textAppearance="@android:style/TextAppearance"
        android:textSize="20sp"
        android:gravity="center_horizontal"
        android:layout_gravity="center_horizontal"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    
  3. 设置图片。首先需要添加图片的资源,在res的drawable 文件夹中添加所需的图片。使用imageview控件,选取之前添加的图片。布局方法和之前类似。

  4. 输入框是由一个EditText和一个Button组成,因为我们使用的是约束布局,可以将两个部件通过双向链接组合在一起。然后设置整体的布局。button的样式可以通过外部导入。在drawable文件夹中新建一个drawable resource file文件,在其中自定义button样式,圆角则设置corners。
  5. 四个单选按钮需要一个RadioGroup,将四个RadioButton分别写入RadioGroup中,设置margin为10sp,默认选中设置checkedButton为想要选中的按钮的id

      <RadioGroup
        android:id="@+id/radioGroup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:checkedButton="@+id/radioButton"
        android:orientation="horizontal"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/editText2">
    

(3)实验遇到的困难以及解决思路

  1. 不知道如何引入外部图片
    解决思路:通过往drawable文件夹中添加图片解决
  2. 无法将输入框合为一个整体
    解决思路:使用约束布局的链样式来邻接两个控件,通过双向连接链接在一起。
  3. 无法设置按钮圆角
    解决思路:在drawable文件夹中新建一个drawable resource file文件,在其中自定义button样式,设置corners度数。
    1. 不知道如何设置文字居中

解决思路:设置gravity属性为center

四、课后实验结果


五、实验思考及感想

  1. 这次作业算是我们这门课程第一次真正意义上的实验,我们借此机会接触了安卓的开发环境。由于安卓的背景问题(谷歌爸爸背锅),国内想要安装好安卓环境要是要费点心的。。好在老师告诉了我们一些巧妙地跳过谷歌的解决方法,最终我们还是完成了安卓环境的配置。所以有的时候当我们在网络上遇到问题的时候,可以考虑另辟蹊径,运用国内现有的资源也能达到一样的效果。
  2. 这周主要内容是安卓的界面布局。界面布局在安卓开发中是很重要的,毕竟第一眼就会见到界面,界面设计的好坏将决定用户的第一印象。界面布局方法其实和之前学习的uwp应用类似,都是使用xml语言来布局的。相对而言安卓的布局方式会更丰富一些。当然我们需要尽量运用相对布局而不是固定的距离,这样在不同的屏幕上会有更好的适应性。
  3. 在遇到一个不理解的api时最好去查找一下官方的文档,里面会有详细的解释。不能只是这次用了就不管了,如果不能深入理解的话,下次使用时还是不会用。


第五周内容

一、实验题目

基础的事件处理

二、实现内容


要求

此处输入图片的描述

  1. RadioButton选择项切换:选择项切换之后,弹出Toast信息“XX被选中”,例如从图片切换到视频,弹出Toast信息“视频被选中”

三、课堂实验结果

(1)实验截图

  1. 整体界面
    此处输入图片的描述
  2. 输入为空时
    此处输入图片的描述
  3. 切换按钮
    此处输入图片的描述
  4. 切换成功
    此处输入图片的描述

(2)实验步骤以及关键代码

  1. 首先我们考虑button的事件处理,我所运用的方法是给button设置监听器。首先我们要找到需要添加监听的button。

    Button button = (Button) findViewById(R.id.button);
    之后再给其添加监听器

    button.setOnClickListener(new View.OnClickListener()

  2. 添加完监听器后我们要在其内部处理事件。题目的要求是当搜索内容为空时弹出toast消息。为了判断搜索框的内容,首先我们要获取搜索框中的文字。

    final EditText searchContent = (EditText) findViewById(R.id.editText2);
    之后使用Toast.makeText函数来弹出消息。

3.如果搜索成功,则弹出对话框。首先新建对话框

final AlertDialog dialog = new AlertDialog.Builder(this).create()

标题,通过 setTitle()方法设置;
图标,通过 setIcon()方法设置;
显示在中间的主要信息,通过setMessage()方法显示,等等。
如果想要设置对话框中的按钮,使用 dialog.setButton来设置按钮事件。

   dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();//关闭对话框
                        }
                    });

搜索失败的设置和以上类似。
4. 还有一个要求是RadioButton选择项切换,原理是类似的。先找到radiogroup的id,然后使用setOnCheckedChangeListener函数来设置事件。弹出toast的方法和如上类似就不再详谈了。

(3)实验遇到的困难以及解决思路

1.不知道哪里设置事件
解决思路:设置监听器setOnClickListener
2.获取不了对应button
解决思路:使用findViewById获取id,使用强制转换获取button
3.无法判断搜索文字是否正确
解决思路:使用equal函数判断字符串是否相等


四、课后实验结果


五、实验思考及感想

  1. 安卓的事件处理实际上也和uwp比较类似。我这里采用了基于监听器的事件处理,基于监听器的事件处理机制是一种委派式Delegation的事件处理方式,事件源将整个事件委托给事件监听器,由监听器对事件进行响应处理。这种处理方式将事件源和事件监听器分离,有利于提供程序的可维护性。还有一种方式是基于回调的事件处理。相比基于监听器的事件处理模型,基于回调的事件处理模型要简单些,该模型中,事件源和事件监听器是合一的,也就是说没有独立的事件监听器存在。当用户在GUI组件上触发某事件时,由该组件自身特定的函数负责处理该事件。
  2. Dialog和Toast是安卓中很重要的功能,在很多项目中都会使用到。除了本次作业使用的之外,其实还有很多其他种类的控件。我们要尽可能多地掌握这些控件,以便在之后使用的时候游刃有余了。
  3. 在写代码的过程中发现对于java语言的基础很不熟悉,比如许多字符串的操作都有所忘记了。因此需要加强一下基础,避免在以后的开发过程中耽搁了。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注