Android项目开发——GeoQuiz项目总结

GeoQuiz项目总结

通过学习Android基本概念与构成应用的基本组件,来开发一个叫GeoQuiz的应用。该应用的用途是测试用户的地理知识。用户单击TRUE或FALSE按钮来回答屏幕上的问题,GeoQuiz可即时反馈答案正确与否。

开发前的准备工作

想要开发一个Android应用,首先要在电脑上装上开发软件。在这里推荐Android Studio,本文所有的开发都是在该平台上进行的。

Android Studio的安装包括:

1.Android SDK

最新版本的Android SDK。

2.Android SDK工具和平台工具

用来测试与调试应用的一套工具。

3.Android模拟器系统镜像

用来在不同虚拟设备上开发测试应用。

下载与安装

可以从Android开发者网站下载Android Studio:https://developer.android.com/sdk/。

首次安装的话,你还需要从http://www.oracle.com下载并安装Java开发者套件(JDK7)。

如仍有安装问题,请访问网址https://developer.android.com/sdk/寻求帮助。

下载早期版本的SDK

Android Studio自带最新版本的SDK和系统模拟器镜像。但若想在Android早期版本上测试应用,还需额外下载相关工具组件。可通过Android SDK管理器来配置安装这些组件。在Android Studio中,选择To o ls→Android→SDK Manager菜单项,如图0-1所示。

                              0-1  Andriod SDK管理器

选择并安装需要的Android版本和工具。下载这些组件需要一定时间,请耐心等待。

通过Android SDK管理器,还可以及时获取Android最新发布内容,比如新系统平台或新版本工具等。

应用开发

1.1 项目的创建

首先,打开Android Studio,创建GeoQuiz项目。

然后是这次项目的一个目录。如下图:

1.2 代码的编写

1.2.1 界面设计

本项目所需要的界面如下所示。

1.2.2 源码

首先先在spring.xml中将设置处理好。

 1 <resources>
 2     <string name="app_name">GeoQuiz</string>
 3
 4     <string name="true_button">TRUE</string>
 5     <string name="false_button">FALSE</string>
 6     <string name="next_button">NEXT</string>
 7     <string name="prev_button">PREV</string>
 8     <string name="correct_toast">Correct!</string>
 9     <string name="incorrect_toast">Incorrect!</string>
10     <string name="warning_text">Are you sure you want to do this?</string>
11     <string name="show_answer_button">Show Answer</string>
12     <string name="cheat_button">Cheat!</string>
13     <string name="judgment_toast">Cheating is wrong.</string>
14     <string name="question_oceans">The Pacific Ocean is larger than the Atlantic Ocean.</string>
15     <string name="question_mideast">The Suez Canal connects the Red Sea and the Indian Ocean.</string>
16     <string name="question_africa">The source of the Nile River is in Egypt.</string>
17     <string name="question_americas">The Amazon River is the longest river in the Americas.</string>
18     <string name="question.asia">Lake Baikal is the world\‘s oldest and deepest freshwater lake.</string>
19 </resources>

在QuizActivity.java中实现从布局到视图。

 1     @Override
 2     protected void onCreate(Bundle savedInstanceState) {
 3         super.onCreate(savedInstanceState);
 4         Log.d(TAG, "onCreate(Bundle) called");
 5         setContentView(R.layout.activity_quiz);
 6
 7         if (savedInstanceState != null) {
 8             mCurrentIndex = savedInstanceState.getInt(KEY_INDEX, 0);
 9         }
10
11         mQuestionTextView = (TextView) findViewById(R.id.question_text_view);
12
13         mTrueButton = (Button) findViewById(R.id.true_button);
14         mTrueButton.setOnClickListener(new View.OnClickListener() {
15             @Override
16             public void onClick(View v){
17                 checkAnswer(true);
18             }
19         });
20         mFalseButton = (Button) findViewById(R.id.false_button);
21         mFalseButton.setOnClickListener(new View.OnClickListener() {
22             @Override
23             public void onClick(View v){
24                 checkAnswer(false);
25             }
26         });
27
28         mNextButton = (Button) findViewById(R.id.next_button);
29         mNextButton.setOnClickListener(new View.OnClickListener() {
30             @Override
31             public void onClick(View v) {
32                 mCurrentIndex = (mCurrentIndex + 1) % mQuestionBank.length;
33                 mIsCheater = false;
34                 updateQuestion();
35             }
36         });
37
38         mPrevButton = (Button) findViewById(R.id.prev_button);
39         mPrevButton.setOnClickListener(new View.OnClickListener() {
40             @Override
41             public void onClick(View v) {
42                 mCurrentIndex = (mCurrentIndex - 1) % mQuestionBank.length;
43                 updateQuestion();
44             }
45         });
46
47         mCheatButton = (Button)findViewById(R.id.cheat_button);
48         mCheatButton.setOnClickListener(new View.OnClickListener() {
49             @Override
50             public void onClick(View v) {
51                 boolean answerIsTrue = mQuestionBank[mCurrentIndex].ismAnswerTrue();
52                 Intent intent = CheatActivity.newIntent(QuizActivity.this, answerIsTrue);
53                 startActivityForResult(intent, REQUEST_CODE_CHEAT);
54             }
55         });
56
57         updateQuestion();
58
59     }

在Question.java模型层代码

 1 public class Question {
 2     private int mTextResId;
 3     private boolean mAnswerTrue;
 4
 5     public Question(int textResId, boolean answerTrue){
 6         mTextResId = textResId;
 7         mAnswerTrue = answerTrue;
 8     }
 9
10     public int getmTextResId() {
11         return mTextResId;
12     }
13
14     public void setmTextResId(int mTextResId) {
15         this.mTextResId = mTextResId;
16     }
17
18     public boolean ismAnswerTrue() {
19         return mAnswerTrue;
20     }
21
22     public void setmAnswerTrue(boolean mAnswerTrue) {
23         this.mAnswerTrue = mAnswerTrue;
24     }
25 }

1.3 Android与MAC设计模式

下图展示了在响应用户单击按钮等事件时,对象间的交互控制数据流。注意,模型对象与视图对象不直接交互。控制器作为它们之间的联系纽带,接收对象发送的消息,然后向其他对象发送操作指令。

创建数组对象,通过与Textview和button交互,在屏幕上显示问题,并且对用户的回答做出反应。

1.4 activity的生命周期

Activity的状态图解

1.5 第二个Activity

activity_cheat.xml中的组件代码

 1 <?xml version="1.0" encoding="utf-8"?>
 2
 3 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 4                 xmlns:tools="http://schemas.android.com/tools"
 5     android:layout_width="match_parent"
 6     android:layout_height="match_parent"
 7     android:orientation="vertical"
 8     android:gravity="center"
 9     tools:context="classroom.geoquiz.CheatActivity">
10
11     <TextView
12         android:layout_width="wrap_content"
13         android:layout_height="wrap_content"
14         android:padding="24dp"
15         android:text="@string/warning_text"/>
16
17     <TextView
18         android:layout_width="wrap_content"
19         android:layout_height="wrap_content"
20         android:id="@+id/answer_text_view"
21         android:padding="24dp"
22         tools:text="Answer"/>
23
24     <Button
25         android:id="@+id/show_answer_button"
26         android:layout_width="wrap_content"
27         android:layout_height="wrap_content"
28         android:text="@string/show_answer_button"/>
29
30 </LinearLayout>

创建了第二个Activity,目的是为了方便用户查看答案。

这是第二个activity的组件示意图。

1.6 启动activity

要启动activity需要通过startActivity()方法。

Intent intent = CheatActivity.newIntent(QuizActivity.this, answerIsTrue);
                startActivityForResult(intent, REQUEST_CODE_CHEAT);
时间: 2024-11-10 11:50:45

Android项目开发——GeoQuiz项目总结的相关文章

上门洗车APP --- Android客户端开发 之 项目结构介绍

上门洗车APP --- Android客户端开发 之 项目结构介绍 前言 虽然公司项目较紧,但还是抽出时间给大家继续更新.     o_O"~ 感谢大家的关注,很高兴和大家共同学习.前面给大家分享了项目中的以下内容: 上门洗车APP --- Android客户端开发 前言及业务简介 上门洗车APP --- Android客户端开发 之 网络框架封装介绍(一) 上门洗车APP --- Android客户端开发 之 网络框架封装介绍(二) 之前有很多朋友私信过来说想打包一份源码学习,由于本项目也是还

Django (九) 项目开发流程&amp;项目架构

项目开发流程&项目架构 1. 软件开发的一般流程 1. 需求分析及确认: 由需求分析工程师与客户确认甚至挖掘需求.输出需求说明文档. ? 2. 概要设计及详细设计: 开发对需求进行概要设计,包括系统的基本处理流程,组织结构.模块划分.接口设计.数据库结构设计等.然后在概要设计的基础上进行详细设计.详细设计中描述实现具体模块所涉及到的主要算法.数据结构.类的层次结构及调用关系,需要说明软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑,以便进行编码和测试.基本达到伪代码的层面. (原型图

Android项目开发---- GeoQuiz

 GeoQuiz项目总结: 前言 本项目为这学期开发的第一个应用,通过此项目我们能学习到一些Android基本概念以及构成应用的UI组件.此篇博客也是我学习编程以来第一次正式完成的第一篇博客,仍是十分浅显与生涩. 开发环境 本项目采用了AndroidStudio为开发环境. 首先我们需要在androidstudio中创建本项目,项目名称为GeoQuiz. 先在AndroidStudio中Start a new Android Studio project 项目名称为GeoQuiz 选择一个空页面

使用Android Studio开发J2SE项目方法

0.前言 最近因为要为项目开发一个底层的Java应用,所以非常偶然的遇到了这样一个问题,过去Eclipse有Java Project而现在手头使用Android Studio并不能直接建立Java应用项目.所以在网上搜集和整合了些资料后发现其实Android Studio也能很完美的支持Java应用项目的开发,所以写这样一篇博客分享给有同样需要的Coder. 1.J2EE项目的建立 Android Studio中并不能直接建立Java项目,所以比较简单偷懒的办法是先随便建一个Android项目,

weex 项目开发 weexpack 项目 打包、签名、发布

一. weexpack build android  和  weexpack run android 的 区别. (1)单纯打包 weexpack build android (2)打包并运行 weexpack run android 注:执行时,发现两者都是调起了浏览器 二.不同平台的打包 html5平台: (1)打包html5平台 weexpack build web 这样你可以把打包后的资源上传到cdn服务器,然后上线你的web项目. (2)在 html5 平台运行 weexpack ru

铁大课表 项目开发总结报告

    铁大课表 项目开发总结报告                 第七小组:闫立新.曹锦锋.李夏蕾. 苏海岩.王伟光.杨世超   2014年5月16日           目录 1引言... 3 1.1编写目的... 3 1.2背景... 3 1.3定义... 3 1.4参考资料... 3 2实际开发结果... 4 2.1产品... 4 2.2主要功能和性能... 4 2.3基本流程... 4 2.4进度... 5 2.5费用... 5 3开发工作评价... 5 3.1对生产效率的评价...

产品项目开发流程

目录 产品项目开发流程 项目调研 项目立项 需求分析评审 原型设计 项目开发 项目测试 项目部署 后期维护 产品项目开发流程 目前市场上成熟的产品项目流程主要有项目调研,项目立项,需求分析评审,原型设计,项目开发,项目测试,项目部署以及后期维护等. 现基于市场上的开发流程以及以往的项目开发经验,个人对项目各个开发阶段进行描述以及项目整体开发流程进行总结. 项目调研 由于没有正式参加过项目调研,故省略...... 项目立项 主要由项目经理发起立项会议,组织相关人员参加立项会议并启动评审项目.在该阶

Android开发1、2周——GeoQuiz项目

GeoQuiz项目总结 通过学习Android基本概念与构成应用的基本组件,来开发一个叫GeoQuiz的应用.该应用的用途是测试用户的地理知识.用户单击TRUE或FALSE按钮来回答屏幕上的问题,GeoQuiz可即时反馈答案正确与否. 开发前的准备工作 想要开发一个Android应用,首先要在电脑上装上开发软件.在这里推荐Android Studio,本文所有的开发都是在该平台上进行的. Android Studio的安装包括: 1.Android SDK 最新版本的Android SDK. 2

Android 实践项目开发 总结

  Android 实践项目开发 总结 课程:移动平台应用开发实践  班级:201592  姓名:杨凤  学号:20159213 成绩:___________       指导老师:娄嘉鹏          实验日期 :2015.12.06. 实验名称:                   android 百度地图开发 实验目的与要求: 1.实现定位 2.查询公交路线       3.目的地查询 实验目的: 在这次的项目开发中,我做的软件主要功能是调用百度地图的接口,实现定位.查询公交路线 和查