Android項目開發---- GeoQuiz

來源:互聯網
上載者:User

標籤:oncreate   line   使用者輸入   水平   設計   系統調用   start   系統   activity棧   

 GeoQuiz項目總結:

  • 前言

本項目為這學期開發的第一個應用,通過此項目我們能學習到一些Android基本概念以及構成應用的UI組件。此篇部落格也是我學習編程以來第一次正式完成的第一篇部落格,仍是十分淺顯與生澀。

  • 開發環境

本項目採用了AndroidStudio為開發環境。

首先我們需要在androidstudio中建立本項目,項目名稱為GeoQuiz。

  • 先在AndroidStudio中Start a new Android Studio project

  • 項目名稱為GeoQuiz

  • 選擇一個空頁面

  • 之後繼續NEXT然後選擇Finish,一個空的項目包變好了。

 

  • 本項目一共需要如下目錄

 

  • 代碼的編寫

首先我們需要進行的是使用者介面的實現,本項目主要採用了垂直與水平LinearLayout組件,TextView組件和Button組件。在text介面我們可以快速的編寫組件代碼從而更加效率的完成布局,本項目總共有兩個activity,以及三個布局視圖包括了可旋轉視圖,我們可以看到完成後的布局如下:

我們為所有的button控制項全都設定了監聽器,所有的監聽器全部使用了匿名內部類來實現,這樣可以相對集中實現監聽器方法並且可以不用繁瑣的建立命名類,我們可以感受一下實現代碼:

  • <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/true_button"/>
  • <resources><string name="app_name">GeoQuiz</string>...<string name="true_button">True</string>...</resources>
  • <Button        android:id="@+id/true_button"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/true_button"/>
  • public class QuizActivity extends AppCompatActivity {private Button mTrueButton;...}
  • public class QuizActivity extends AppCompatActivity {private Button mTrueButton;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_quiz);mTrueButton = (Button) findViewById(R.id.true_button);}}
  • ...@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_quiz);mTrueButton = (Button) findViewById(R.id.true_button);mTrueButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// Does nothing yet, but soon!}});mFalseButton = (Button) findViewById(R.id.false_button);}}

下面的模型圖展示了在響應諸如單擊按鈕等使用者事件時,對象間的互動控制資料留。

需要注意的是:模型對象與視圖對象不能直接互動。控制器作為他們之間的聯絡紐帶,加收對象發送的訊息,然後向其它對象發送操作指令。

 

 

 

  • 接下來運用了MVC的設計模式

我們可以先簡單的瞭解:

 

MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟體設計典範

  • 模型(Model)—— 是應用程式中用於處理應用程式資料邏輯的部分。通常模型對象負責在資料庫中存取資料
  • 視圖(View)—— 是應用程式中處理資料顯示的部分。通常視圖是依據模型資料建立的。
  • 控制器(Controller)—— 是應用程式中處理使用者互動的部分。通常控制器負責從視圖讀取資料,控制使用者輸入,並向模型發送資料。

使用MVC的優點。

  • 耦合性低 —— 視圖層和業務層分離,這樣就允許更改視圖層代碼而不用重新編譯模型和控制器代碼
  • 重用性高 —— 多個視圖能共用一個模型
  • 生命週期成本低 —— MVC使開發和維護使用者介面的技術含量降低。

結合代碼來更加深入瞭解:

public class Question {
private int mTextResId;
private boolean mAnswerTrue;

public Question(int textResId, boolean answerTrue){
mTextResId = textResId;
mAnswerTrue = answerTrue;
}

public int getTextResId(){
return mTextResId;
}
public void setTextResId(int textResId){
mTextResId = textResId;
}
public boolean isAnswerTrue(){
return mAnswerTrue;
}
public void setAnswerTrue(boolean answerTrue){
mAnswerTrue = answerTrue;
}
}

 

  • Activity的生命週期

每個安卓都有其生命週期,在生命週期內,activity在運行、暫停、停止和不運行這四種狀態中轉換。每次狀態轉換時,都有相應的Activity方法發訊息通知activity。顯示了activity的生命週期、狀態以及狀態切換時系統調用的方法。

Activity是由Activity棧進管理,當來到一個新的Activity後,此Activity將被加入到Activity棧頂,之前的Activity位於此Activity底部。Acitivity一般意義上有四種狀態:

  • 1.當Activity位於棧頂時,此時正好處於螢幕最前方,此時處於運行狀態;
  • 2.當Activity失去了焦點但仍然對用於可見(如棧頂的Activity是透明的或者棧頂Activity並不是鋪滿整個手機螢幕),此時處於暫停狀態;
  • 3.當Activity被其他Activity完全遮擋,此時此Activity對使用者不可見,此時處於停止狀態;
  • 4.當Activity由於人為或系統原因(如低記憶體等)被銷毀,此時處於銷毀狀態;

在每個不同的狀態階段,Adnroid系統對Activity內相應的方法進行了回調。因此,我們在程式中寫Activity時,一般都是繼承Activity類並重寫相應的回調方法。

 

 

Android項目開發---- GeoQuiz

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.