文章目录
前言
马上要开发的应用名叫GeoQuiz,它能给出一道道地理知识问题。用户点击TRUE或FALSE 按钮来回答屏幕上的问题,GeoQuiz即时作出反馈。
一、实验步骤
1.创建一个新的项目
启动Android Studio程序,首次运行的话,会看到如图所示的欢迎界面。
在欢迎界面,选择创建Android Studio新项目选项(Start a new Android Studio project);非首次运行的话,选择File → New → New Project…菜单项。
单击Next按钮,接下来配置应用支持哪些版本的Android设备。GeoQuiz应用只能在手机上运 行,所以这里勾选Phone and Tablet选项。SDK最低版本选择API 19: Android 4.4 (KitKat)
单击Next按钮继续。 在接下来的窗口中,需要为GeoQuiz应用的启动初始屏选择模板,如图所示。选择Empty Activity后单击Next按钮继续。
在应用向导的最后一个窗口,命名activity子类为QuizActivity,如图所示
2.用户界面设计
打开app/res/layout/activity_quiz.xml文件。如果看到的是布局预览界面,请点击底部的 Text页切换显示XML代码。 删除原来的hello word文件。写下面代码。
<activity_quiz.xml >代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical" >
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="24dp"
android:text="@string/question_text" />
<LinearLayout android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/true_button" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/false_button" />
</LinearLayout>
</LinearLayout>
3.创建字符串资源
在项目工具窗口中,找到app/res/values目录,展开目录,打开strings.xml文件。
<string name="app_name">GeoQuiz</string>
<string name="question_text">Canberra is the capital of Australia.</string>
<string name="true_button">True</string>
<string name="false_button">False</string> </resources>
4.为按钮添加资源ID
(activity_quiz.xml)
<LinearLayout ... >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="24dp"
android:text="@string/question_text" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/true_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/true_button" />
<Button android:id="@+id/false_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/false_button" />
</LinearLayout>
</LinearLayout>
5. 添加成员变量
QuizActivity.java
public class QuizActivity extends AppCompatActivity {
private Button mTrueButton;
private Button mFalseButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quiz);
}
}
```
在此使用Alt+Enter组合键消除错误
## 6. 引用组件
QuizActivity.java
```java
public class QuizActivity extends AppCompatActivity {
private Button mTrueButton;
private Button mFalseButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quiz);
mTrueButton = (Button) findViewById(R.id.true_button);
mFalseButton = (Button) findViewById(R.id.false_button);
}
}
7.设置监听器
QuizActivity.java
@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);
}
}
mTrueButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Does nothing yet, but soon!
}
});
mFalseButton = (Button) findViewById(R.id.false_button);
mFalseButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Does nothing yet, but soon!
}
});
}
8.增加toast字符串
<resources>
<string name="app_name">GeoQuiz</string>
<string name="question_text">Canberra is the capital of Australia.</string>
<string name="true_button">True</string>
<string name="false_button">False</string>
<string name="correct_toast">Correct!</string>
<string name="incorrect_toast">Incorrect!</string> </resources>
9.创建提示消息
QuizActivity.java
mTrueButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(QuizActivity.this,
R.string.correct_toast,
Toast.LENGTH_SHORT).show();
// Does nothing yet, but soon!
}
});
mFalseButton = (Button) find ViewById(R.id.false_button);
mFalseButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(QuizActivity.this,
R.string.incorrect_toast,
Toast.LENGTH_SHORT).show();
// Does nothing yet, but soon!
}
});
二、模拟机运行
运行事先打开的模拟器。
三、真机运行
真机样子