Android项目开发—GeoQuiz

Android项目开发—GeoQuiz


  • 应用规划
    确定功能
    必须的界面及界面跳转的流程
    ...
  • 界面设计
    主界面确定
    模块界面、列表、查看、编辑界面
    添加需要的组件
    ...
  • 数据操作和存储
  • 业务实现
  • 页面跳转
    每个页面间的跳转
    菜单、按钮、事件等

开发过程

  • 安装Android Studio
  • 创建GeoQuiz项目
  • 用户界面设计
  • 功能设计
  • 项目模拟运行

界面视图如下
1231866-20170916183250922-10357457.png
1231866-20170916183256735-471685462.png
1231866-20170916183302469-35542581.png


组件的应用

  • 在XML文件中定义组件
  • 在strings.xml文件中添加我们需要的string字段
  • 在XML文件中对控件属性进行设置,添加ID、内容
  • 在Activity.java文件中添加相应的成员变量
  • 引用生成的视图对象
  • 为对象设置监听器以响应用户操作

以Butto控件为例

  • ```
 - ```python
<resources>
    <string name="app_name">GeoQuiz</string>
    ...
    <string name="true_button">True</string>
    ...
</resources>
  • ```
 - ```
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);
}
}

涉及的知识点

  • Android与MVC设计模式
    MVC (Model-View-Controller):M是指逻辑模型,V是指视图模型,C则是控制器。一个逻辑模型可以对于多种视图模型,比如一批统计数据你可以分别用柱状图、饼图来表示。一种视图模型也可以对于多种逻辑模型。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式,而C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
    1231866-20170916183327078-278294206.png

  • activity的生命周期
    1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。
    2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。
    3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。
    4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。
    5.用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。
    6.当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。
    7.用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。

  • 使用intent完成QuizActivity到CheatActivity的数据传递
    Intent(意图)主要是解决Android应用的各项组件之间的通讯。
    为了实现传递数据这个目的需要以下步骤
    Activity1需要构造一个Intent,这个Intent用于告诉系统,我们要做“查看”动作,intent可调用putExtra来存放想要传递的数据,然后调用setClass,设置Activity1和欲调用的组件Activity2,最后调用startActivity将构造的Intent传入,系统会根据此Intent中的描述,到Activity1中找到满足此Intent要求的Activity,系统会调用找到的,Activity2最终传入Intent
    1231866-20170916183335141-1235498563.png


遇到的问题

导入错的包
按照书本进行项目时可能缺漏某段代码
常出现空指针异常错误

转载于:https://www.cnblogs.com/cmbgyw/p/7532146.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值