(原創)《Android編程權威指南》學習筆記01-- Android應用初體驗--005

來源:互聯網
上載者:User

標籤:

從布局 XML到視圖對象

  在建立GeoQuiz項目的同時,也建立了一個名為QuizActivity的Activity子類。QuizActivity類檔案存放在項目的src目錄下。目錄src是項目全部Java原始碼的存放處。

  開啟QuizActivity.java檔案,查看其中的代碼,如下:

  

package com.bignerdranch.android.geoquiz;import android.os.Bundle;import android.app.Activity;import android.view.Menu;public class QuizActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_quiz);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.quiz, menu);        return true;    }    }

            代碼清單1-4:QuizActivity的預設類檔案(QuizActivity.java)

  該Java類檔案包含兩個Activity方法:onCreate(Bundle)和onCreateOptionsMenu(Menu)。 
  暫不用理會onCreateOptionsMenu(Menu)方法,第16章會詳細介紹它。
  activity子類的執行個體建立後,onCreate(Bundle)方法將會被調用。activity建立後,它需要擷取並管理屬於自己的使用者介面。擷取activity的使用者介面,可調用以下Activity方法:  

public void setContentView( int layoutResID )

  通過傳入布局的資源ID參數,該方法產生指定布局的視圖並將其放置在螢幕上。布局檢視窗產生後,布局檔案包含的組件也隨之以各自的屬性定義完成執行個體化。

資源與資源ID

  布局是一種資源資源是應用非代碼形勢的內容,比像檔案、音頻檔案以及XML檔案等。

  項目的所有資源檔都存放在目錄res的子目錄下。通過包瀏覽器可以看到,布局activity_quiz.xml資源檔存放在res/layout/目錄下。包含字串資源的strings檔案存放在res/values/目錄下。

  在包瀏覽器展開目錄gen,找到並開啟R.java檔案,即可看到GeoQuiz應用當前所有的資源ID。R.java檔案在Android項目編譯過程中自動產生,遵照該檔案頭部的警示,請不要嘗試修改該檔案的內容。

/* AUTO-GENERATED FILE.  DO NOT MODIFY. * * This class was automatically generated by the * aapt tool from the resource data it found.  It * should not be modified by hand. */package com.bignerdranch.android.geoquiz;public final class R {    public static final class attr {    }    public static final class dimen {        /**  Default screen margins, per the Android Design guidelines.          Customize dimensions originally defined in res/values/dimens.xml (such as         screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.             */        public static final int activity_horizontal_margin=0x7f040000;        public static final int activity_vertical_margin=0x7f040001;    }    public static final class drawable {        public static final int ic_launcher=0x7f020000;    }    public static final class id {        public static final int action_settings=0x7f080000;    }    public static final class layout {        public static final int activity_quiz=0x7f030000;    }    public static final class menu {        public static final int quiz=0x7f070000;    }    public static final class string {        public static final int action_settings=0x7f050004;        public static final int app_name=0x7f050000;        public static final int false_button=0x7f050003;        public static final int question_text=0x7f050001;        public static final int true_button=0x7f050002;    }    ...}

            代碼清單1-5:GeoQuiz應用當前的資源ID(R.java)

  目前為止,我們還未在代碼中引用過字串,但如果需要,則應該使用以下方法:

setTitle( R.string.app_name );

  要為組件產生資源ID,請在定義組件時為其添加上android:id屬性。在activity_quiz.xml檔案中,分別為兩個按鈕添加上android:id屬性,如代碼清單1-6所示。

<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: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>

            代碼清單1-6:為按鈕添加資源ID(activity_quiz.xml)

  請注意android:id屬性值前面有一個+標誌,而android:text屬性值則沒有這是因為我們將要建立資源ID,而對字串資源只是做了引用。

  儲存activity_quiz.xml檔案,重新查看R.java檔案,確認R.id內部類中產生了兩個新的資源ID,如代碼清單1-7所示。

public final class R {...public static final class id {        public static final int action_settings=0x7f080002;        public static final int false_button=0x7f080001;        public static final int true_button=0x7f080000;    }...

            代碼清單1-7:新的資源ID(R.java)

(原創)《Android編程權威指南》學習筆記01-- Android應用初體驗--005

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.