- Android經(jīng)典應(yīng)用程序開發(fā)
- 韓超編著
- 2142字
- 2019-01-09 15:18:43
1.4 Android應(yīng)用開發(fā)的方法
1.4.1 API參考文檔的使用
在開發(fā)Android應(yīng)用程序時(shí)可以參考SDK中提供的參考文檔,其內(nèi)容包含在Reference標(biāo)簽中。
1.包索引和類索引
參考文檔分成兩種索引方式。
Package Index(包索引);
Class Index(類索引)。
包索引根據(jù)字母順序列出Android的各個(gè)包,每個(gè)包中包含若干個(gè)類、接口等內(nèi)容;類索引按照字母順序列出了所有的類(也包括接口等內(nèi)容)。在查找一個(gè)類的幫助信息時(shí),如果不知道其屬于哪個(gè)包,則可以先根據(jù)類索引進(jìn)行查找,打開類的幫助后,可以反向得知它屬于哪個(gè)包。
根據(jù)包索引,每一個(gè)包中包含的主要內(nèi)容大致如下所示。
Interfaces(接口類);
Classes(類);
Enums(枚舉值);
Exceptions(異常)。
每個(gè)包中包含的內(nèi)容,基本上是Java語言中標(biāo)準(zhǔn)的內(nèi)容。
Android的參考文檔中的類是Android系統(tǒng)API的主要組成部分,主要參考的內(nèi)容包括了以下的內(nèi)容。
根據(jù)類索引,每一個(gè)類中包含的主要內(nèi)容大致如下所示。
擴(kuò)展和實(shí)現(xiàn)的內(nèi)容;
按包名的繼承(擴(kuò)展)關(guān)系(可用于反向查找這個(gè)類所在的包);
Overview(概覽);
XML Attributes(XML屬性);
Constants(常量);
Constructors(構(gòu)造方法);
Methods(方法)。
2.類的幫助
在這些幫助內(nèi)容中,大部分是Java語言的基本語法內(nèi)容,只有XML Attributes(XML屬性)一項(xiàng)是Android專用的。某些重要的類還包含對(duì)于類的詳細(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:表示這是一個(gè)公開的類。
extends [……]:標(biāo)明了這個(gè)類繼承的父類(Java不支持多繼承,因此每個(gè)類只有一個(gè)唯一的父類),后面的內(nèi)容表示這個(gè)類從祖先開始繼承的關(guān)系。這里的類使用的是包含了其所在包名稱的全名,因此在這里可以得知類及其祖先類屬于哪個(gè)包。
Implements [……]:標(biāo)明了這個(gè)類實(shí)現(xiàn)的接口(可以有多個(gè))。
Known Direct Subclasses [……]:這個(gè)類的直接繼承者。
Known Indirect Subclasses [……]:這個(gè)類的間接繼承者。
對(duì)于以上的Activity類,可以看出其在android.app包中,直接繼承了android.view.ContextThemeWrapper類,并且被ActivityGroup, ListActivity等幾個(gè)類直接繼承,被LauncherActivity等幾個(gè)類間接繼承。
類的介紹的主要內(nèi)容在后面,主要部分是各個(gè)類的方法的說明,這些方法也是在類的使用過程中需要重點(diǎn)關(guān)注的內(nèi)容。
Class Overview (類的介紹) Summary Constants (常量的列表) Inherited Constants (繼承的常量的列表,按照繼承類的順序) Public Constructors (公共的構(gòu)造函數(shù)) Public Methods (公共方法的列表) Protected Methods (保護(hù)方法的列表) Inherited Methods (繼承方法的列表,按照繼承類的順序) (詳細(xì)的介紹)
類的幫助中一般只列出了自己的常量、方法、XML屬性等,對(duì)于繼承得到的內(nèi)容(包括方法和常量),按照繼承的順序列出。由于Java類是單繼承,因此在這個(gè)部分,首先是父類,然后是祖父類,依此類推。
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這樣一個(gè)特殊的項(xiàng)目。在這里包含了Button Attributes,TextView Attributes,View Attributes,根據(jù)類的繼承關(guān)系可以得知,這其實(shí)是自己的屬性、父類的屬性(Button類的父類是android.widget.TextView)、祖父類的屬性(Button類的祖父類是android.view.View)。
Button類沒有自己的XML屬性,但是其父類和祖父類有,展開Inherited XML Attributes項(xiàng)目的From class android.widget.TextView和From class android.view.View可以得到這些屬性的列表。每個(gè)屬性包含了Attribute Name(屬性名稱)、Related Method(相關(guān)方法)、Description(描述)幾個(gè)項(xiàng)目。
例如,TextView的幾個(gè)屬性如下所示:
android:text setText(CharSequence) Text to display. android:textColor setTextColor(ColorStateList) Text color.
android:text等表示了屬性在XML文件中的名稱,setText()等表示了在Java源文件中使用的方法,最右側(cè)的內(nèi)容是這個(gè)屬性的描述。
在各個(gè)類的幫助中,點(diǎn)擊XML attributes中的連接可以查看其詳細(xì)的內(nèi)容,這些XML屬性的幫助及相關(guān)的值可以在android.R.styleable類中查找,這個(gè)類也可以直接被調(diào)出,方法為:
Package Index => android => android.R.styleable
各個(gè)XML屬性使用一個(gè)整型數(shù)組(int[])和整數(shù)(int)表示。對(duì)于一個(gè)具體的屬性,其變量名通常使用如下的格式表示:
<應(yīng)用屬性的類名>_<屬性名>
例如,styleable類中的如下內(nèi)容,表示了TextView這個(gè)類的各個(gè)XML屬性的標(biāo)識(shí):
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ù)組表示這個(gè)屬性組,TextView_text、TextView_textColor等整數(shù)值表示一個(gè)具體的屬性。
其中,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文件中所使用的屬性值。
由此,在一個(gè)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中這個(gè)屬性的標(biāo)識(shí)。
4.接口的幫助
相比各種類的幫助信息,接口(Interface)的幫助信息更加簡(jiǎn)單一些。一般的接口是需要被實(shí)現(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這個(gè)接口在android.view這個(gè)包中。對(duì)于一個(gè)接口,Indirect Subclasses的含義為實(shí)現(xiàn)(implements)這個(gè)接口。
View.OnClickListener的幫助信息后面的內(nèi)容同樣列出這個(gè)接口中包含的成員方法,如下所示:
Summary Public Methods abstract void onClick(View v) Called when a view has been clicked.
這些方法是要求接口的實(shí)現(xiàn)者來實(shí)現(xiàn)的,如果一個(gè)類實(shí)現(xiàn)了View.OnClickListener這個(gè)接口,其中就必須要有這個(gè)接口的onClick()函數(shù)。
1.4.2 Android應(yīng)用開發(fā)模式
1.開發(fā)起點(diǎn)和方式
Android的應(yīng)用程序開發(fā)可以從Android系統(tǒng)的參考實(shí)例開始,這些參考實(shí)例在SDK各個(gè)版本中均有包含。它們對(duì)于了解Android程序的基本結(jié)構(gòu)、各種接口的使用有著巨大的幫助作用。例如:SkeletonApp示例程序?yàn)橐粋€(gè)基本的應(yīng)用程序的骨架,ApiDemo示例程序中包含了很多基本API的使用,其他示例程序?yàn)檩^為復(fù)雜和專用的程序。
在開發(fā)Android應(yīng)用程序的時(shí)候,一般需要使用Android參考文檔和示例代碼結(jié)合使用的方式。需要首先了解解除耦合性之后基礎(chǔ)功能的實(shí)現(xiàn),將各個(gè)方面的基本功能進(jìn)行排列組合后,一般可以得到根據(jù)需求實(shí)現(xiàn)的功能。
開發(fā)Android應(yīng)用程序需要具有的兩個(gè)方面的基礎(chǔ)為:
標(biāo)準(zhǔn)Java程序的編寫;
Android應(yīng)用程序結(jié)構(gòu)。
標(biāo)準(zhǔn)Java程序的編寫方面屬于比較成熟的技術(shù),具有大量的參考資料。由于語法的類似性,有一定的C或者C++基礎(chǔ)的開發(fā)人員也可以快速進(jìn)入Java程序開發(fā),主要的差別在于Java提供的各種的類庫(kù)使用問題上。
Android應(yīng)用程序結(jié)構(gòu)方面,需要了解Android應(yīng)用程序源代碼的組成格式(工程描述文件、源代碼、資源文件)、編譯流程,生成的APK包的格式。這些內(nèi)容通過一個(gè)類似SkeletonApp簡(jiǎn)單程序即可了解。
2.開發(fā)的主體脈絡(luò)
在從事Android應(yīng)用程序開發(fā)的時(shí)候,最好先根據(jù)一定脈絡(luò)把握住Android系統(tǒng)應(yīng)用程序開發(fā)的主體方面。在這條主線之上會(huì)涉及很多應(yīng)用程序開發(fā)的各種API和相關(guān)技巧。
主體脈絡(luò)可以分成三個(gè)階段:
第一階段,熟悉UI部分的開發(fā);
第二階段,熟悉非UI部分的開發(fā);
第三階段,全面熟悉各種API。
在UI部分開發(fā)階段,各個(gè)不同系統(tǒng)開發(fā)具有相通的地方,一般從三個(gè)方面來進(jìn)行學(xué)習(xí):UI程序結(jié)構(gòu)、各種控件及其布局、圖形接口(GDI)。在學(xué)習(xí)Android的時(shí)候,可以使用這種通用UI程序開發(fā)方法,在宏觀上不牽涉Android本身的系統(tǒng)結(jié)構(gòu)和API結(jié)構(gòu)。按照通用的方式構(gòu)建一個(gè)主線,當(dāng)然在微觀方面,無法回避Android的具體實(shí)現(xiàn)。
三個(gè)方面在Android中的具體體現(xiàn)如下。
UI程序結(jié)構(gòu):活動(dòng)、視圖、控件事件、設(shè)備事件、UI跳轉(zhuǎn)、對(duì)話框、菜單、標(biāo)題欄、樣式等方面。
各種控件及其布局:Android中的控件結(jié)構(gòu)、基本控件、自定義控件、Android的UI布局原理、Android中的各種布局、Android中的自適應(yīng)視圖、多頁面集成。
圖形接口方面:2D圖形程序的結(jié)構(gòu)、2D的圖像圖形文本繪制、2D特殊效果、3D圖形接口的程序結(jié)構(gòu)、OpenGL 3D動(dòng)畫、交互式3D、Android中的可繪制內(nèi)容、Android中的動(dòng)畫。
提示:在以上的各個(gè)和UI相關(guān)的內(nèi)容中,除了特別注明“Android”的之外,其他都是GUI系統(tǒng)的通用名詞。
在非UI部分開發(fā)階段,Android系統(tǒng)具有自身的特點(diǎn),涉及的方面比較多。首先需要從其主體部分進(jìn)行了解,也就是Android非UI部分的程序結(jié)構(gòu)。主要的內(nèi)容是服務(wù)、廣播接收器、內(nèi)容提供者這三種非UI的組件,Android的工程描述文件,Android的資源和資產(chǎn)。
在全面熟悉各種API階段,首先需要根據(jù)Android API結(jié)構(gòu),了解熟悉各個(gè)包及其主要的功能。其中,Android中比較特定的幾個(gè)方面為:權(quán)限問題、數(shù)據(jù)存儲(chǔ)問題、各種與硬件相關(guān)的接口、用戶通知方式等。
顯然,學(xué)習(xí)Android開發(fā)是幾個(gè)方面交替進(jìn)步、互相促進(jìn)的過程,各個(gè)方面之間并不是完全獨(dú)立的,需要平衡主線和全面了解API二者的關(guān)系。
- 基于EDA的電子技術(shù)課程設(shè)計(jì)
- Hands-On MQTT Programming with Python
- Android 9編程通俗演義
- 電子設(shè)備人機(jī)工程設(shè)計(jì)及應(yīng)用
- 移動(dòng)基站設(shè)備與維護(hù)(第2版)
- iTunes玩全不求人
- 現(xiàn)代交換原理與技術(shù)(第2版)
- 光電子技術(shù)基礎(chǔ)與技能
- Premiere影視動(dòng)畫后期合成
- 圖表細(xì)說電子元器件
- 5G網(wǎng)絡(luò)建設(shè)實(shí)踐與模式創(chuàng)新
- 輕松玩轉(zhuǎn)DSP:基于TMS320F2833x
- LTE/LTE-Advanced關(guān)鍵技術(shù)與系統(tǒng)性能(“十二五”國(guó)家重點(diǎn)圖書出版規(guī)劃項(xiàng)目)
- Go Standard Library Cookbook
- 4G網(wǎng)絡(luò)專項(xiàng)優(yōu)化技術(shù)實(shí)踐