生活随笔
收集整理的這篇文章主要介紹了
补11
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 創建安卓應用
- 將背景圖片拷貝到drawable目錄
- 主布局資源文件activity_main.xml
- 字符串資源文件strings.xml
- 創建試題實體類
- 主界面類MainActivity
- 運行效果
創建安卓應用
將背景圖片拷貝到drawable目錄
主布局資源文件activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/tt"android:orientation="vertical"android:padding="15dp"tools:context=".MainActivity"><TextViewandroid:id="@+id/tv_stem"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="2.5"android:textSize="20sp" /><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:layout_marginTop="10dp"android:layout_marginBottom="10dp"android:background="#aaaaaa" /><FrameLayoutandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="4"><LinearLayoutandroid:id="@+id/ll_single_choice"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:visibility="invisible"><RadioGroupandroid:id="@+id/rg_single_choice"android:layout_width="match_parent"android:layout_height="match_parent"><RadioButtonandroid:id="@+id/rb_single_a"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="20sp" /><RadioButtonandroid:id="@+id/rb_single_b"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="20sp" /><RadioButtonandroid:id="@+id/rb_single_c"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="20sp" /><RadioButtonandroid:id="@+id/rb_single_d"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="20sp" /></RadioGroup></LinearLayout><LinearLayoutandroid:id="@+id/ll_multiple_choice"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:visibility="invisible"><CheckBoxandroid:id="@+id/cb_multiple_a"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="20sp" /><CheckBoxandroid:id="@+id/cb_multiple_b"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="20sp" /><CheckBoxandroid:id="@+id/cb_multiple_c"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="20sp" /><CheckBoxandroid:id="@+id/cb_multiple_d"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="20sp" /></LinearLayout><LinearLayoutandroid:id="@+id/ll_judgement"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:visibility="invisible"><RadioGroupandroid:id="@+id/rg_judgement"android:layout_width="match_parent"android:layout_height="match_parent"><RadioButtonandroid:id="@+id/rb_judgement_t"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/judgement_t"android:textSize="20sp" /><RadioButtonandroid:id="@+id/rb_judgement_f"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/judgement_f"android:textSize="20sp" /></RadioGroup></LinearLayout></FrameLayout><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:layout_marginTop="10dp"android:layout_marginBottom="10dp"android:background="#aaaaaa" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:gravity="center"android:orientation="horizontal"><Buttonandroid:id="@+id/btn_previous"android:layout_width="100dp"android:layout_height="wrap_content"android:onClick="doPrevious"android:text="@string/previous"android:textSize="20sp" /><Buttonandroid:id="@+id/btn_next"android:layout_width="100dp"android:layout_height="wrap_content"android:onClick="doNext"android:text="@string/next"android:textSize="20sp" /><Buttonandroid:id="@+id/btnSubmit"android:layout_width="100dp"android:layout_height="wrap_content"android:onClick="doSubmit"android:text="@string/submit"android:textSize="20sp" /><Buttonandroid:id="@+id/btn_exit"android:layout_width="100dp"android:layout_height="wrap_content"android:onClick="doExit"android:text="@string/exit"android:textSize="20sp" /></LinearLayout>
</LinearLayout>
字符串資源文件strings.xml
<resources><string name="judgement_t">正確</string><string name="judgement_f">錯誤</string><string name="previous">上一題</string><string name="next">下一題</string><string name="submit">提交</string><string name="exit">退出</string>
</resources>
創建試題實體類
package net.tp.standrd;
/***功能:試題實體類*/public class Question {/*** 編號*/private int id;/*** 題干*/private String stem;/*** A選項*/private String a;/*** B選項*/private String b;/*** C選項*/private String c;/*** D選項*/private String d;/*** 題型* 1 - 單選題* 2 - 多選題* 3 - 判斷題*/private int type;/*** 答案*/private String answer;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getStem() {return stem;}public void setStem(String stem) {this.stem = stem;}public String getA() {return a;}public void setA(String a) {this.a = a;}public String getB() {return b;}public void setB(String b) {this.b = b;}public String getC() {return c;}public void setC(String c) {this.c = c;}public String getD() {return d;}public void setD(String d) {this.d = d;}public int getType() {return type;}public void setType(int type) {this.type = type;}public String getAnswer() {return answer;}public void setAnswer(String answer) {this.answer = answer;}@Overridepublic String toString() {return "Question{" +"id=" + id +", stem='" + stem + '\'' +", a='" + a + '\'' +", b='" + b + '\'' +", c='" + c + '\'' +", d='" + d + '\'' +", type=" + type +", answer='" + answer + '\'' +'}';}
}
主界面類MainActivity
package net.tp.standrd;import android.app.AlertDialog;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;import androidx.appcompat.app.AppCompatActivity;import java.util.ArrayList;public class MainActivity extends AppCompatActivity {private LinearLayout llSingleChoice;private LinearLayout llMultipleChoice;private LinearLayout llJudgement;private TextView tvStem;private RadioGroup rgSingleChoice;private RadioButton rbSingleA;private RadioButton rbSingleB;private RadioButton rbSingleC;private RadioButton rbSingleD;private RadioGroup rgJudgement;private RadioButton rbJudgementT;private RadioButton rbJudgementF;private CheckBox cbMultipleA;private CheckBox cbMultipleB;private CheckBox cbMultipleC;private CheckBox cbMultipleD;private ArrayList<Question> questions;private int questionIndex;private String[] answers;private String answer;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 利用布局資源文件設置用戶界面setContentView(R.layout.activity_main);// 通過資源標識符獲得控件實例llSingleChoice = findViewById(R.id.ll_single_choice);llMultipleChoice = findViewById(R.id.ll_multiple_choice);llJudgement = findViewById(R.id.ll_judgement);tvStem = findViewById(R.id.tv_stem);rgSingleChoice = findViewById(R.id.rg_single_choice);rbSingleA = findViewById(R.id.rb_single_a);rbSingleB = findViewById(R.id.rb_single_b);rbSingleC = findViewById(R.id.rb_single_c);rbSingleD = findViewById(R.id.rb_single_d);rgJudgement = findViewById(R.id.rg_judgement);rbJudgementT = findViewById(R.id.rb_judgement_t);rbJudgementF = findViewById(R.id.rb_judgement_f);cbMultipleA = findViewById(R.id.cb_multiple_a);cbMultipleB = findViewById(R.id.cb_multiple_b);cbMultipleC = findViewById(R.id.cb_multiple_c);cbMultipleD = findViewById(R.id.cb_multiple_d);// 初始化試題庫questions = getQuestions();// 實例化答案數組answers = new String[questions.size()];// 取出第1題Question question = questions.get(questionIndex);// 根據題型設置界面setInterfaceByType(question);}/*** 獲取試題列表** @return 試題列表*/private ArrayList<Question> getQuestions() {ArrayList<Question> questions = new ArrayList<>();// 創建第1題Question question = new Question();question.setId(1);question.setStem("駕駛機動車在道路上違反道路交通安全法的行為,屬于什么行為?");question.setA("違章行為");question.setB("違法行為");question.setC("過失行為");question.setD("違規行為");question.setType(1);question.setAnswer("B");// 將第1題添加到試題庫questions.add(question);// 創建第2題question = new Question();question.setId(2);question.setStem("交通信號包括交通信號燈、交通標志、交通標線和交通警察的指揮。");question.setA("正確");question.setB("錯誤");question.setC("");question.setD("");question.setType(3);question.setAnswer("A");// 將第2題添加到試題庫questions.add(question);// 創建第3題question = new Question();question.setId(3);question.setStem("機動車駕駛人違法駕駛造成重大交通事故構成犯罪的,依法追究什么責任?");question.setA("刑事責任");question.setB("民事責任");question.setC("經濟責任");question.setD("直接責任");question.setType(1);question.setAnswer("A");// 將第3題添加到試題庫questions.add(question);// 創建第4題question = new Question();question.setId(4);question.setStem("錢某駕駛大型臥鋪客車,乘載45人(核載40人),保持40公里/小時以上的車速行至八宿縣境內連續下坡急轉彎路段處,翻下100米深的山崖,造成17人死亡、20人受傷。錢某的主要違法行為是什么?");question.setA("駕駛時接聽手持電話");question.setB("超速行駛");question.setC("客車超員");question.setD("疲勞駕駛");question.setType(2);question.setAnswer("BC");// 將第4題添加到試題庫questions.add(question);// 創建第5題question = new Question();question.setId(5);question.setStem("鄒某駕駛大型臥鋪客車(核載35人,實載47人),行至京港澳高速公路938公里時,因乘車人攜帶的大量危險化學品在車廂內突然發生爆燃,造成41人死亡,6人受傷。此事故中的主要違法行為是什么?");question.setA("客車超員");question.setB("乘車人攜帶易燃易爆危險物品");question.setC("超速行駛");question.setD("不按規定停車");question.setType(2);question.setAnswer("AB");// 將第5題添加到試題庫questions.add(question);return questions;}/*** 根據題型設置界面** @param question*/private void setInterfaceByType(Question question) {// 判斷題型,選擇界面switch (question.getType()) {case 1:llSingleChoice.setVisibility(View.VISIBLE);llMultipleChoice.setVisibility(View.INVISIBLE);llJudgement.setVisibility(View.INVISIBLE);tvStem.setText("[單選] " + question.getId() + ". " + question.getStem());tvStem.setTextColor(Color.RED);rbSingleA.setText(question.getA());rbSingleB.setText(question.getB());rbSingleC.setText(question.getC());rbSingleD.setText(question.getD());// 清空控件選中狀態rbSingleA.setChecked(false);rbSingleB.setChecked(false);rbSingleC.setChecked(false);rbSingleD.setChecked(false);rgSingleChoice.check(-1);answer = answers[questionIndex];if (answer != null) {// 根據用戶答案來設定單選按鈕狀態switch (answer) {case "A":rbSingleA.setChecked(true);break;case "B":rbSingleB.setChecked(true);break;case "C":rbSingleC.setChecked(true);break;case "D":rbSingleD.setChecked(true);break;}}break;case 2:llMultipleChoice.setVisibility(View.VISIBLE);llSingleChoice.setVisibility(View.INVISIBLE);llJudgement.setVisibility(View.INVISIBLE);tvStem.setText("[多選] " + question.getId() + ". " + question.getStem());tvStem.setTextColor(Color.BLACK);cbMultipleA.setText(question.getA());cbMultipleB.setText(question.getB());cbMultipleC.setText(question.getC());cbMultipleD.setText(question.getD());// 清空控件選中狀態cbMultipleA.setChecked(false);cbMultipleB.setChecked(false);cbMultipleC.setChecked(false);cbMultipleD.setChecked(false);answer = answers[questionIndex];if (answer != null) {for (int i = 0; i < answer.length(); i++) {switch (answer.charAt(i)) {case 'A':cbMultipleA.setChecked(true);break;case 'B':cbMultipleB.setChecked(true);break;case 'C':cbMultipleC.setChecked(true);break;case 'D':cbMultipleD.setChecked(true);break;}}}break;case 3:llJudgement.setVisibility(View.VISIBLE);llSingleChoice.setVisibility(View.INVISIBLE);llMultipleChoice.setVisibility(View.INVISIBLE);tvStem.setText("[判斷] " + question.getId() + ". " + question.getStem());tvStem.setTextColor(Color.BLUE);// 清空控件選中狀態rbJudgementT.setChecked(false);rbJudgementF.setChecked(false);rgJudgement.check(-1);// 根據用戶答案來設定單選按鈕狀態answer = answers[questionIndex];if (answer != null) {switch (answer) {case "A":rbJudgementT.setChecked(true);break;case "B":rbJudgementF.setChecked(true);break;}}}}/*** 退出** @param view*/public void doExit(View view) {finish();}/*** 上一題** @param view*/public void doPrevious(View view) {// 判斷用戶是否做了本題switch (questions.get(questionIndex).getType()) {case 1:if (rbSingleA.isChecked() || rbSingleB.isChecked() || rbSingleC.isChecked() || rbSingleD.isChecked()) {saveAnswer();}break;case 2:if (cbMultipleA.isChecked() || cbMultipleB.isChecked() || cbMultipleC.isChecked() || cbMultipleD.isChecked()) {saveAnswer();}break;case 3:if (rbJudgementT.isChecked() || rbJudgementF.isChecked()) {saveAnswer();}break;}if (questionIndex > 0) {questionIndex--;} else {questionIndex = questions.size() - 1;}// 根據題型設置界面setInterfaceByType(questions.get(questionIndex));}/*** 下一題** @param view*/public void doNext(View view) {// 判斷用戶是否做了本題switch (questions.get(questionIndex).getType()) {case 1:if (rbSingleA.isChecked() || rbSingleB.isChecked() || rbSingleC.isChecked() || rbSingleD.isChecked()) {saveAnswer();}break;case 2:if (cbMultipleA.isChecked() || cbMultipleB.isChecked() || cbMultipleC.isChecked() || cbMultipleD.isChecked()) {saveAnswer();}break;case 3:if (rbJudgementT.isChecked() || rbJudgementF.isChecked()) {saveAnswer();}break;}Log.d("test", (questionIndex + 1) + answers[questionIndex]);if (questionIndex < questions.size() - 1) {questionIndex++;} else {questionIndex = 0;}// 根據題型設置界面setInterfaceByType(questions.get(questionIndex));}/*** 提交按鈕單擊事件處理方法** @param view*/public void doSubmit(View view) {// 保存當前題目答案saveAnswer();// 計算成績點int points = 0;for (int i = 0; i < questions.size(); i++) {if (null != answers[i]) {if (answers[i].equals(questions.get(i).getAnswer())) {points++;}}}// 按百分制來折算分數double score = points * 100 / questions.size();// 根據分數給出評語String comment = "";if (score >= 90) {comment = "分數:" + score + "\n評語:棒棒噠~";} else if (score >=60) {comment = "分數:" + score + "\n評語:還行吧!";} else {comment = "分數:" + score + "\n評語:好好干吧!";}// 利用警告對話框來顯示測試結果AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setIcon(R.mipmap.ic_launcher_round).setTitle("測試結果").setMessage(comment).setPositiveButton("確定", null).create().show();}/*** 保存用戶選擇的答案*/private void saveAnswer() {switch (questions.get(questionIndex).getType()) {case 1: // 單選題if (rbSingleA.isChecked()) {answers[questionIndex] = "A";} else if (rbSingleB.isChecked()) {answers[questionIndex] = "B";} else if (rbSingleC.isChecked()) {answers[questionIndex] = "C";} else {answers[questionIndex] = "D";}break;case 2: // 多選題StringBuilder builder = new StringBuilder();if (cbMultipleA.isChecked()) {builder.append("A");}if (cbMultipleB.isChecked()) {builder.append("B");}if (cbMultipleC.isChecked()) {builder.append("C");}if (cbMultipleD.isChecked()) {builder.append("D");}answers[questionIndex] = builder.toString();break;case 3: // 判斷題if (rbJudgementT.isChecked()) {answers[questionIndex] = "A";} else {answers[questionIndex] = "B";}break;}}
}
運行效果
總結
以上是生活随笔為你收集整理的补11的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。