官术网_书友最值得收藏!

1.4 Android應(yīng)用開發(fā)的方法

1.4.1 API參考文檔的使用

在開發(fā)Android應(yīng)用程序時可以參考SDK中提供的參考文檔,其內(nèi)容包含在Reference標(biāo)簽中。

1.包索引和類索引

參考文檔分成兩種索引方式。

Package Index(包索引);

Class Index(類索引)。

包索引根據(jù)字母順序列出Android的各個包,每個包中包含若干個類、接口等內(nèi)容;類索引按照字母順序列出了所有的類(也包括接口等內(nèi)容)。在查找一個類的幫助信息時,如果不知道其屬于哪個包,則可以先根據(jù)類索引進行查找,打開類的幫助后,可以反向得知它屬于哪個包。

根據(jù)包索引,每一個包中包含的主要內(nèi)容大致如下所示。

Interfaces(接口類);

Classes(類);

Enums(枚舉值);

Exceptions(異常)。

每個包中包含的內(nèi)容,基本上是Java語言中標(biāo)準(zhǔn)的內(nèi)容。

Android的參考文檔中的類是Android系統(tǒng)API的主要組成部分,主要參考的內(nèi)容包括了以下的內(nèi)容。

根據(jù)類索引,每一個類中包含的主要內(nèi)容大致如下所示。

擴展和實現(xiàn)的內(nèi)容;

按包名的繼承(擴展)關(guān)系(可用于反向查找這個類所在的包);

Overview(概覽);

XML Attributes(XML屬性);

Constants(常量);

Constructors(構(gòu)造方法);

Methods(方法)。

2.類的幫助

在這些幫助內(nèi)容中,大部分是Java語言的基本語法內(nèi)容,只有XML Attributes(XML屬性)一項是Android專用的。某些重要的類還包含對于類的詳細(xì)介紹的圖表。

例如,Activity類的幫助文檔的前面的信息如下所示:

        public class
        Activity
        extends ContextThemeWrapper
        implements ComponentCallbacks KeyEvent.Callback LayoutInflater.Factory
                View.On CreateContextMenuListener Window.Callback
        java.lang.Object
            android.content.Context
              android.content.ContextWrapper
                android.view.ContextThemeWrapper
                  android.app.Activity
        Known Direct Subclasses
        ActivityGroup, AliasActivity, ExpandableListActivity, ListActivity
        Known Indirect Subclasses
        LauncherActivity, PreferenceActivity, TabActivity

從Activity類中可以看出,類的幫助文檔主要包含以下一些內(nèi)容。

public class:表示這是一個公開的類。

extends [……]:標(biāo)明了這個類繼承的父類(Java不支持多繼承,因此每個類只有一個唯一的父類),后面的內(nèi)容表示這個類從祖先開始繼承的關(guān)系。這里的類使用的是包含了其所在包名稱的全名,因此在這里可以得知類及其祖先類屬于哪個包。

Implements [……]:標(biāo)明了這個類實現(xiàn)的接口(可以有多個)。

Known Direct Subclasses [……]:這個類的直接繼承者。

Known Indirect Subclasses [……]:這個類的間接繼承者。

對于以上的Activity類,可以看出其在android.app包中,直接繼承了android.view.ContextThemeWrapper類,并且被ActivityGroup, ListActivity等幾個類直接繼承,被LauncherActivity等幾個類間接繼承。

類的介紹的主要內(nèi)容在后面,主要部分是各個類的方法的說明,這些方法也是在類的使用過程中需要重點關(guān)注的內(nèi)容。

        Class Overview
         (類的介紹)
        Summary
          Constants
         (常量的列表)
          Inherited Constants
         (繼承的常量的列表,按照繼承類的順序)
          Public Constructors
         (公共的構(gòu)造函數(shù))
          Public Methods
         (公共方法的列表)
          Protected Methods
         (保護方法的列表)
          Inherited Methods
         (繼承方法的列表,按照繼承類的順序)
     (詳細(xì)的介紹)

類的幫助中一般只列出了自己的常量、方法、XML屬性等,對于繼承得到的內(nèi)容(包括方法和常量),按照繼承的順序列出。由于Java類是單繼承,因此在這個部分,首先是父類,然后是祖父類,依此類推。

3.XML屬性

相比標(biāo)準(zhǔn)的Java幫助,Android中某些類的幫助文檔有些特殊,主要區(qū)別是包含了XML Attributes(XML屬性)一類。XML屬性是在各種XML文件中使用的內(nèi)容。XML屬性有些是在布局文件中使用的,也有些在AndroidManifest.xml中使用的,或者在其他的XML文件中使用的。

例如,Button類(android.widget.Button)的參考文檔的主要內(nèi)容如下所示:

        public class
        Button
        extends TextView
        java.lang.Object
          ?  android.view.View
            ?  android.widget.TextView
              ?  android.widget.Button
        Known Direct Subclasses
        CompoundButton
        CompoundButton A button with two states, checked and unchecked.
        Known Indirect Subclasses
        CheckBox, RadioButton, ToggleButton
        XML attributes
        See Button Attributes, TextView Attributes, View Attributes
        Summary
            Inherited XML Attributes
              From class android.widget.TextView
              From class android.view.View
            Inherited Constants
            Public Constructors
            Inherited Methods

Button類的頭部信息和普通的類基本相同,但是包含了XML attributes這樣一個特殊的項目。在這里包含了Button Attributes,TextView Attributes,View Attributes,根據(jù)類的繼承關(guān)系可以得知,這其實是自己的屬性、父類的屬性(Button類的父類是android.widget.TextView)、祖父類的屬性(Button類的祖父類是android.view.View)。

Button類沒有自己的XML屬性,但是其父類和祖父類有,展開Inherited XML Attributes項目的From class android.widget.TextView和From class android.view.View可以得到這些屬性的列表。每個屬性包含了Attribute Name(屬性名稱)、Related Method(相關(guān)方法)、Description(描述)幾個項目。

例如,TextView的幾個屬性如下所示:

        android:text         setText(CharSequence)          Text to display.
        android:textColor    setTextColor(ColorStateList)   Text color.

android:text等表示了屬性在XML文件中的名稱,setText()等表示了在Java源文件中使用的方法,最右側(cè)的內(nèi)容是這個屬性的描述。

在各個類的幫助中,點擊XML attributes中的連接可以查看其詳細(xì)的內(nèi)容,這些XML屬性的幫助及相關(guān)的值可以在android.R.styleable類中查找,這個類也可以直接被調(diào)出,方法為:

        Package Index => android => android.R.styleable

各個XML屬性使用一個整型數(shù)組(int[])和整數(shù)(int)表示。對于一個具體的屬性,其變量名通常使用如下的格式表示:

        <應(yīng)用屬性的類名>_<屬性名>

例如,styleable類中的如下內(nèi)容,表示了TextView這個類的各個XML屬性的標(biāo)識:

        public static final int[] TextView
        public static final int TextView_text
        public static final int TextView_textColor
        public static final int TextView_width
        public static final int TextView_height
        public static final int TextView_autoText
        public static final int TextView_capitalize

這里的TextView整型數(shù)組表示這個屬性組,TextView_text、TextView_textColor等整數(shù)值表示一個具體的屬性。

其中,TextView_capitalize屬性的相關(guān)幫助內(nèi)容如下所示:

        public static final int TextView_capitalize
        If set, specifies that this TextView has a textual input method and should automatically
    capitalize what the user types. The default is "none".
        Must be one of the following constant values.
        Constant Value Description
            none         0 Don't automatically capitalize anything.
            sentences    1 Capitalize the first word of each sentence.
            words        2 Capitalize the first letter of every word.
            characters   3 Capitalize every character.
        This corresponds to the global attribute resource symbol capitalize.
        Constant Value: 44 (0x0000002c)

這里列出了屬性的值(Value),這些值的本質(zhì)是整數(shù)常量。一般情況下,類似none、sentences等數(shù)值名稱,也就是在XML文件中所使用的屬性值。

由此,在一個XML文件中,與TextView類及其屬性相關(guān)的內(nèi)容可以按照如下的方式來描述:

        <TextView android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:autoText="false"
            android:capitalize="none" />

根據(jù)這些屬性的變量名,可以得知在XML中使用的字符串名稱,整數(shù)值作為Android中這個屬性的標(biāo)識。

4.接口的幫助

相比各種類的幫助信息,接口(Interface)的幫助信息更加簡單一些。一般的接口是需要被實現(xiàn)才能夠使用的。

例如,android.view包中的View.OnClickListener的幫助信息前面的內(nèi)容如下所示:

        public static interface
        View.OnClickListener
        android.view.View.OnClickListener
        Known Indirect Subclasses
        CharacterPickerDialog, KeyboardView

這里的android.view.View.OnClickListener表示了View.OnClickListener這個接口在android.view這個包中。對于一個接口,Indirect Subclasses的含義為實現(xiàn)(implements)這個接口。

View.OnClickListener的幫助信息后面的內(nèi)容同樣列出這個接口中包含的成員方法,如下所示:

        Summary
            Public Methods
              abstract void  onClick(View v) Called when a view has been clicked.

這些方法是要求接口的實現(xiàn)者來實現(xiàn)的,如果一個類實現(xiàn)了View.OnClickListener這個接口,其中就必須要有這個接口的onClick()函數(shù)。

1.4.2 Android應(yīng)用開發(fā)模式

1.開發(fā)起點和方式

Android的應(yīng)用程序開發(fā)可以從Android系統(tǒng)的參考實例開始,這些參考實例在SDK各個版本中均有包含。它們對于了解Android程序的基本結(jié)構(gòu)、各種接口的使用有著巨大的幫助作用。例如:SkeletonApp示例程序為一個基本的應(yīng)用程序的骨架,ApiDemo示例程序中包含了很多基本API的使用,其他示例程序為較為復(fù)雜和專用的程序。

在開發(fā)Android應(yīng)用程序的時候,一般需要使用Android參考文檔和示例代碼結(jié)合使用的方式。需要首先了解解除耦合性之后基礎(chǔ)功能的實現(xiàn),將各個方面的基本功能進行排列組合后,一般可以得到根據(jù)需求實現(xiàn)的功能。

開發(fā)Android應(yīng)用程序需要具有的兩個方面的基礎(chǔ)為:

標(biāo)準(zhǔn)Java程序的編寫;

Android應(yīng)用程序結(jié)構(gòu)。

標(biāo)準(zhǔn)Java程序的編寫方面屬于比較成熟的技術(shù),具有大量的參考資料。由于語法的類似性,有一定的C或者C++基礎(chǔ)的開發(fā)人員也可以快速進入Java程序開發(fā),主要的差別在于Java提供的各種的類庫使用問題上。

Android應(yīng)用程序結(jié)構(gòu)方面,需要了解Android應(yīng)用程序源代碼的組成格式(工程描述文件、源代碼、資源文件)、編譯流程,生成的APK包的格式。這些內(nèi)容通過一個類似SkeletonApp簡單程序即可了解。

2.開發(fā)的主體脈絡(luò)

在從事Android應(yīng)用程序開發(fā)的時候,最好先根據(jù)一定脈絡(luò)把握住Android系統(tǒng)應(yīng)用程序開發(fā)的主體方面。在這條主線之上會涉及很多應(yīng)用程序開發(fā)的各種API和相關(guān)技巧。

主體脈絡(luò)可以分成三個階段:

第一階段,熟悉UI部分的開發(fā);

第二階段,熟悉非UI部分的開發(fā);

第三階段,全面熟悉各種API。

在UI部分開發(fā)階段,各個不同系統(tǒng)開發(fā)具有相通的地方,一般從三個方面來進行學(xué)習(xí):UI程序結(jié)構(gòu)、各種控件及其布局、圖形接口(GDI)。在學(xué)習(xí)Android的時候,可以使用這種通用UI程序開發(fā)方法,在宏觀上不牽涉Android本身的系統(tǒng)結(jié)構(gòu)和API結(jié)構(gòu)。按照通用的方式構(gòu)建一個主線,當(dāng)然在微觀方面,無法回避Android的具體實現(xiàn)。

三個方面在Android中的具體體現(xiàn)如下。

UI程序結(jié)構(gòu):活動、視圖、控件事件、設(shè)備事件、UI跳轉(zhuǎn)、對話框、菜單、標(biāo)題欄、樣式等方面。

各種控件及其布局:Android中的控件結(jié)構(gòu)、基本控件、自定義控件、Android的UI布局原理、Android中的各種布局、Android中的自適應(yīng)視圖、多頁面集成。

圖形接口方面:2D圖形程序的結(jié)構(gòu)、2D的圖像圖形文本繪制、2D特殊效果、3D圖形接口的程序結(jié)構(gòu)、OpenGL 3D動畫、交互式3D、Android中的可繪制內(nèi)容、Android中的動畫。

提示:在以上的各個和UI相關(guān)的內(nèi)容中,除了特別注明“Android”的之外,其他都是GUI系統(tǒng)的通用名詞。

在非UI部分開發(fā)階段,Android系統(tǒng)具有自身的特點,涉及的方面比較多。首先需要從其主體部分進行了解,也就是Android非UI部分的程序結(jié)構(gòu)。主要的內(nèi)容是服務(wù)、廣播接收器、內(nèi)容提供者這三種非UI的組件,Android的工程描述文件,Android的資源和資產(chǎn)。

在全面熟悉各種API階段,首先需要根據(jù)Android API結(jié)構(gòu),了解熟悉各個包及其主要的功能。其中,Android中比較特定的幾個方面為:權(quán)限問題、數(shù)據(jù)存儲問題、各種與硬件相關(guān)的接口、用戶通知方式等。

顯然,學(xué)習(xí)Android開發(fā)是幾個方面交替進步、互相促進的過程,各個方面之間并不是完全獨立的,需要平衡主線和全面了解API二者的關(guān)系。

主站蜘蛛池模板: 连南| 宜兰市| 应用必备| 东乡县| 台南市| 汪清县| 青川县| 蒲城县| 洛川县| 台东县| 石台县| 淄博市| 鹤山市| 舒兰市| 葫芦岛市| 开鲁县| 东港市| 阿尔山市| 孙吴县| 镶黄旗| 丰台区| 淳化县| 阳信县| 同江市| 榆林市| 新野县| 荥阳市| 望都县| 鄂伦春自治旗| 贵溪市| 乡宁县| 宜良县| 宁阳县| 东阳市| 宝鸡市| 孙吴县| 荆门市| 永昌县| 大石桥市| 万宁市| 乌恰县|