标签:eating evel android应用 XML upd strong 复制 update question
通过学习Android基本概念与构成应用的基本组件,来开发一个叫GeoQuiz的应用。该应用的用途是测试用户的地理知识。用户单击TRUE或FALSE按钮来回答屏幕上的问题,GeoQuiz可即时反馈答案正确与否。
想要开发一个Android应用,首先要在电脑上装上开发软件。在这里推荐Android Studio,本文所有的开发都是在该平台上进行的。
Android Studio的安装包括:
1.Android SDK
最新版本的Android SDK。
2.Android SDK工具和平台工具
用来测试与调试应用的一套工具。
3.Android模拟器系统镜像
用来在不同虚拟设备上开发测试应用。

首先,打开Android Studio,创建GeoQuiz项目。如图1.1-1所示。

图1.1-1
此次项目的具体目录。如图1.1-2所示。

图1.1-2
此次项目的具体界面如下图所示。


主界面设计(竖屏、横屏)

CHEAT按钮的关联界面设计
在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-2
在项目中主要使用的Activity的生命周期如图1.4-1所示。

图1.4-1
在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>
以下是项目过程开发中遇到的问题。
使用阿里云的国内镜像仓库地址,就可以快速的下载需要的文件。
修改项目根目录下的文件 build.gradle 如下。
buildscript {
repositories {
maven{ url ‘http://maven.aliyun.com/nexus/content/groups/public/‘}
}
}
allprojects {
repositories {
maven{ url ‘http://maven.aliyun.com/nexus/content/groups/public/‘}
}
}
然后选择重新构建项目就可以了。
标签:eating evel android应用 XML upd strong 复制 update question
原文地址:http://www.cnblogs.com/MiracleSugar/p/7536921.html