对GeoQuiz项目功能和实现的分析

GeoQuiz主要功能是:

  1. 用户通过点击“正确”或“错误”按钮回答屏幕上显示的判断题,并根据Toast出的信息检查自己的答案是否正确;
  2. 通过点击“上一题”或“下一题”切换题目;
  3. 该应用还提供了作弊功能,当用户点击“作弊”按钮时,应用会告诉你正确答案,但通过作弊手段得到正确答案的题目将在用户回答该问题时Toast出“作弊是不对的”的信息;

一、 答题界面的activity和它的布局介绍

1、引用资源

图片资源作为切换题目按钮的资源,保存于res/drawable中
字符串资源用来保存题目的内容等,保存于res/values/strings.xml中

2、答题界面的布局

图1
图2

图1对应的XML被放在res/layout文件夹中,图2对应的XML被放在res/layout-land文件夹中,这两个XML的名称相同,它们只是不同方向布局的不同呈现。

所有带layout前缀的属性,它都表示该控件相对于它的父控件的位置,而不带layout的属性则表示该控件自身的内容相对于该控件的位置。

3、控制答题界面的activity(主activity)

  • 保存题目的TrueFalse类
    首先,我们需要一个能保存每一道题目信息的类,该类就是一个简单的DTO对象,包含三个成员变量,分别用于存储题目、答案、用户是否做过弊

  • QuizActivity类(主activity)
    UI控件中的AlertDialog:AlertDialog用到了所谓的建造者(Builder)模式。对话框是一个可以高度定制的UI控件,我们可以设置它的抬头,背景,标题,子标题,内容,确定和取消的按钮等,若用常规的初始化方法将dialog初始化,那构造函数的参数就得写上好几行,而且有些内容可设可不设,那么就要重载N多个构造方法,所以不妨对dialog的每一部分都设置一个方法,这样就可以有选择的构造每一部分,构造方法也不必是好几行了。
    onSaveInstanceState(),这个方法和activity的生命周期有关:在一个activity实例被销毁之前,都要回调onPause()、onStop()、onDestory()方法,因为系统一般不会销毁正在onResume的activity,而可能会回收处于暂停或停止状态的activity对象,所以onSaveInstanceState()方法被回调的时刻有可能是在onPause()被调用之后,或者onStop()被调用之后。

二、 作弊界面的activity和它的布局介绍

1、布局介绍

图3

2、作弊界面的activity

该activity接收主activity传过来的答案信息,同时通过setResult()的bundle携带“用户是否触发了作弊按钮”信息回传给主activity

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容