Android项目开发---- GeoQuiz

 GeoQuiz项目总结:

  • 前言

本项目为这学期开发的第一个应用,通过此项目我们能学习到一些Android基本概念以及构成应用的UI组件。此篇博客也是我学习编程以来第一次正式完成的第一篇博客,仍是十分浅显与生涩。

  • 开发环境

本项目采用了AndroidStudio为开发环境。

首先我们需要在androidstudio中创建本项目,项目名称为GeoQuiz。

  • 先在AndroidStudio中Start a new Android Studio project

  • 项目名称为GeoQuiz

  • 选择一个空页面

  • 之后继续NEXT然后选择Finish,一个空的项目包变好了。
  • 本项目一共需要如下目录

  • 代码的编写

首先我们需要进行的是用户界面的实现,本项目主要采用了垂直与水平LinearLayout组件,TextView组件和Button组件。在text界面我们可以快速的编写组件代码从而更加效率的完成布局,本项目总共有两个activity,以及三个布局视图包括了可旋转视图,我们可以看到完成后的布局如下:

我们为所有的button控件全都设置了监听器,所有的监听器全部使用了匿名内部类来实现,这样可以相对集中实现监听器方法并且可以不用繁琐的创建命名类,我们可以感受一下实现代码:

  • <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/true_button"/>
  • <resources>
    <string name="app_name">GeoQuiz</string>
    ...
    <string name="true_button">True</string>
    ...
    </resources>
  • <Button
            android:id="@+id/true_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/true_button"/>
  • public class QuizActivity extends AppCompatActivity {
    private Button mTrueButton;
    ...
    }
  • public class QuizActivity extends AppCompatActivity {
    private Button mTrueButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_quiz);
    mTrueButton = (Button) findViewById(R.id.true_button);
    }
    }
  • ...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_quiz);
    mTrueButton = (Button) findViewById(R.id.true_button);
    mTrueButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    // Does nothing yet, but soon!
    }
    });
    mFalseButton = (Button) findViewById(R.id.false_button);
    }
    }

下面的模型图展示了在响应诸如单击按钮等用户事件时,对象间的交互控制数据留。

需要注意的是:模型对象与视图对象不能直接交互。控制器作为他们之间的联系纽带,加收对象发送的消息,然后向其它对象发送操作指令。

  • 接下来运用了MVC的设计模式

如图我们可以先简单的了解:

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范

  • 模型(Model)—— 是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据
  • 视图(View)—— 是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。
  • 控制器(Controller)—— 是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

使用MVC的优点。

  • 耦合性低 —— 视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码
  • 重用性高 —— 多个视图能共享一个模型
  • 生命周期成本低 —— MVC使开发和维护用户接口的技术含量降低。

结合代码来更加深入了解:

public class Question {    private int mTextResId;    private boolean mAnswerTrue;

public Question(int textResId, boolean answerTrue){        mTextResId = textResId;        mAnswerTrue = answerTrue;    }

public int getTextResId(){        return mTextResId;    }    public void setTextResId(int textResId){        mTextResId = textResId;    }    public boolean isAnswerTrue(){        return mAnswerTrue;    }    public void setAnswerTrue(boolean answerTrue){        mAnswerTrue = answerTrue;    }}
  • Activity的生命周期

每个安卓都有其生命周期,在生命周期内,activity在运行、暂停、停止和不运行这四种状态中转换。每次状态转换时,都有相应的Activity方法发消息通知activity。下图显示了activity的生命周期、状态以及状态切换时系统调用的方法。

Activity是由Activity栈进管理,当来到一个新的Activity后,此Activity将被加入到Activity栈顶,之前的Activity位于此Activity底部。Acitivity一般意义上有四种状态:

  • 1.当Activity位于栈顶时,此时正好处于屏幕最前方,此时处于运行状态;
  • 2.当Activity失去了焦点但仍然对用于可见(如栈顶的Activity是透明的或者栈顶Activity并不是铺满整个手机屏幕),此时处于暂停状态;
  • 3.当Activity被其他Activity完全遮挡,此时此Activity对用户不可见,此时处于停止状态;
  • 4.当Activity由于人为或系统原因(如低内存等)被销毁,此时处于销毁状态;

在每个不同的状态阶段,Adnroid系统对Activity内相应的方法进行了回调。因此,我们在程序中写Activity时,一般都是继承Activity类并重写相应的回调方法。

时间: 2024-10-23 14:35:13

Android项目开发---- GeoQuiz的相关文章

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

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

Android项目开发第五周

本周进展:本周是此次Android项目开发最后一周,按照进度基本上完成了Android游戏开发的各项任务. 总的开发报告如下: 1.需求分析: 当前移动互联网快速发展,人们生活逐渐趋于多元化,以智能手机为代表的电子产品逐渐受到人们的追捧,手机游戏渐渐地成为了人们休闲娱乐的一种方式.本款软件是一款基于Android系统下采用2.5D技术开发的休闲益智类塔防游戏.塔防游戏是目前市场上比较流行的一类游戏. 2.系统设计: 本游戏的策划主要包含:游戏类型定位.呈现技术以及目标平台的确定等工作. 游戏类型

Android项目开发全程(二)--Afinal用法简单介绍

本篇博文接上篇的<Android项目开发全程(一)--创建工程>,主要介绍一下在本项目中用到的一个很重要的框架-Afinal,由于本系列博文重点是项目开发全程,所以在这里就先介绍一下本项目中用到的几个功能: Afinal简介 Afinal 是一个android的sqlite orm 和 ioc 框架.同时封装了android中的http框架,使其更加简单易用: 使用finalBitmap,无需考虑bitmap在android中加载的时候oom的问题和快速滑动的时候图片加载位置错位等问题. Af

Android项目开发五-《星星生活志》1.使用MediaRecorder录制音频

Android设备实现录制音频的简单demo 转载请注明; http://blog.csdn.net/u013670933/article/details/26089487 代码例如以下: public class MainActivity extends Activity { File soundFile;//输出文件 MediaRecorder mRecorder; @Override protected void onCreate(Bundle savedInstanceState) {

Android项目开发全程(三)-- 项目的前期搭建、网络请求封装是怎样实现的

在前两篇博文中已经做了铺垫,下面咱们就可以用前面介绍过的内容开始做一个小项目了(项目中会用到Afinal框架,不会用Afinal的童鞋可以先看一下上一篇博文),正所谓麻雀虽小,五脏俱全,这在里我会尽量的将前期的项目搭建做的相对实用一些,以便后期可以有效的实现团队协作和项目维护.一开始可能会看起来麻烦些,可能会觉得还不如直接用简单的方式去实现来的方便,磨刀不误砍柴工嘛,要想后期开发效率高一些,前期就不要图省事了. 一个项目肯定不是一蹴而就的,咱们一步一步来,本篇博文先详细介绍项目搭建.通过url地

Android项目开发第四周学习总结

Android项目开发实战第四周 在本周,我们进行了Android项目第四周的项目开发,在本周,我们对原有的项目进行改进,我们的想法是使项目在原有的基础上增加一些新的功能,使得txt阅读器可以更加先进,在前面几周,我们的阅读器只能读取一个txt文本,而无法对这个文本进行编辑例如:更改背景颜色,更改字号等,功能比较简单.在本周,我们在原有阅读器的基础上又增加了一些按钮,它们的功能分别是调整字体背景颜色,对字号的大小进行更改,其中,改变字体的背景颜色功能我们已经实现了,更改字体字号大小的功能还没有完

Android项目开发一

新浪微博客户端NABC Need(需求): 1.对功能的规定 1)载入界面:初始化资源,检查当前数据库是否创建账户,若没有,提示“您还未创建任何账户,是否现在创建?”. 2)授权:访问微博账号,允许应用进行以下操作:获得个人信息.分享内容到你的微博.获得你的评论. 3)登录认证:显示头像,登录账户名,如果存在多个账户,需要选中一个账户登录,添加.删除账户. 4)用户首页:显示微博账户头像.昵称.好友及关注最新微博信息.可进行刷新. 5)编辑和上传微博:编写微博并发布. 6)评论和转发微博:对微博

Android项目开发遇到的问题(64K的错误)的解决之路,从入坑到出坑

自己一个android项目,一直以来进展还算顺利,没有遇到什么严重性的问题,今天准备给同事手机上安装一下玩玩,谁知丢人丢大,无法build apk!报错!my god,我开发没问题啊,我手机连上usb,然后android studio里面运行,很顺利,能够正确安装. 但是换同事的手机却不行,编译报错,不行,再试下我的手机,依然正常,换同事手机就不行!! 我的第一反应是手机版本问题!果然,我手机6.0,同时手机依然是:4.4.4,好吧,去看看我的项目配置: 好吧,貌似是支持4.4.4的啊,为毛呢?

Android项目开发前准备工作(一)

让Android融入我的生活! 前段时间一直忙,项目赶时间上线,时间紧,任务重,天天加班,还搞了三个通宵,最终按照领导要求,保证项目按时上线,现在轻松 下来了,一整天没事干,闲暇之余,想对自己开发的工作总结一下,感觉颇有收获,总结如下,给大家分享一下,希望能给大家带来些 许帮助!欢迎评论,欢迎分享,欢迎收藏! 1:项目开发前,我们一定要全面了解项目中所有的界面需求,实现界面都需要用到哪些组件,比如现在的Android应用中特别流行圆形 Icon.Listview上滑加载.下拉刷新.百度定位.各种