GeoQuiz主要功能是:
- 用戶通過點擊“正確”或“錯誤”按鈕回答屏幕上顯示的判斷題,并根據Toast出的信息檢查自己的答案是否正確;
- 通過點擊“上一題”或“下一題”切換題目;
- 該應用還提供了作弊功能,當用戶點擊“作弊”按鈕時,應用會告訴你正確答案,但通過作弊手段得到正確答案的題目將在用戶回答該問題時Toast出“作弊是不對的”的信息;
一、 答題界面的activity和它的布局介紹
1、引用資源
圖片資源作為切換題目按鈕的資源,保存于res/drawable中
字符串資源用來保存題目的內容等,保存于res/values/strings.xml中
2、答題界面的布局
圖1對應的XML被放在res/layout文件夾中,圖2對應的XML被放在res/layout-land文件夾中,這兩個XML的名稱相同,它們只是不同方向布局的不同呈現。
所有帶layout前綴的屬性,它都表示該控件相對于它的父控件的位置,而不帶layout的屬性則表示該控件自身的內容相對于該控件的位置。
3、控制答題界面的activity(主activity)
保存題目的TrueFalse類
首先,我們需要一個能保存每一道題目信息的類,該類就是一個簡單的DTO對象,包含三個成員變量,分別用于存儲題目、答案、用戶是否做過弊QuizActivity類(主activity)
UI控件中的AlertDialog:AlertDialog用到了所謂的建造者(Builder)模式。對話框是一個可以高度定制的UI控件,我們可以設置它的抬頭,背景,標題,子標題,內容,確定和取消的按鈕等,若用常規的初始化方法將dialog初始化,那構造函數的參數就得寫上好幾行,而且有些內容可設可不設,那么就要重載N多個構造方法,所以不妨對dialog的每一部分都設置一個方法,這樣就可以有選擇的構造每一部分,構造方法也不必是好幾行了。
onSaveInstanceState(),這個方法和activity的生命周期有關:在一個activity實例被銷毀之前,都要回調onPause()、onStop()、onDestory()方法,因為系統一般不會銷毀正在onResume的activity,而可能會回收處于暫停或停止狀態的activity對象,所以onSaveInstanceState()方法被回調的時刻有可能是在onPause()被調用之后,或者onStop()被調用之后。
二、 作弊界面的activity和它的布局介紹
1、布局介紹
2、作弊界面的activity
該activity接收主activity傳過來的答案信息,同時通過setResult()的bundle攜帶“用戶是否觸發了作弊按鈕”信息回傳給主activity