對GeoQuiz項目功能和實現的分析

GeoQuiz主要功能是:

  1. 用戶通過點擊“正確”或“錯誤”按鈕回答屏幕上顯示的判斷題,并根據Toast出的信息檢查自己的答案是否正確;
  2. 通過點擊“上一題”或“下一題”切換題目;
  3. 該應用還提供了作弊功能,當用戶點擊“作弊”按鈕時,應用會告訴你正確答案,但通過作弊手段得到正確答案的題目將在用戶回答該問題時Toast出“作弊是不對的”的信息;

一、 答題界面的activity和它的布局介紹

1、引用資源

圖片資源作為切換題目按鈕的資源,保存于res/drawable中
字符串資源用來保存題目的內容等,保存于res/values/strings.xml中

2、答題界面的布局

圖1
圖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、布局介紹

圖3

2、作弊界面的activity

該activity接收主activity傳過來的答案信息,同時通過setResult()的bundle攜帶“用戶是否觸發了作弊按鈕”信息回傳給主activity

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容