一、Android學習API指南:【了解】
1.應用的組成部分AppComponents
1.1.應用的基本原理AppFundamentals
1.2.ActivityActivities
1.2.1.片段Fragments
1.2.2.加載器Loaders
1.2.3.任務和返回堆TasksandBackStack
1.3.Service服務Services
1.3.1.綁定服務BoundServices
1.3.2.AIDLAndroidInterfaceDefinitionLanguage
1.4.內容提供器ContentProviders
1.4.1.內容提供器基礎ContentProvidersBasics
1.4.2.創建一個內容提供器CreatingaContentProvider
1.4.3.日歷提供器CalendarProvider
1.4.4.通信錄提供器ContactProvider
1.5.意圖和意圖過濾器IntentsandIntentsFilters
1.6.進程和線程ProcessandThreads
1.7.權限系統Permissions
1.8.窗口小部件AppWidgets
1.9.Android清單AndroidManifest
2.用戶界面UserInterface
2.1.概述Overview
2.2.布局Layout
2.2.1.線形布局LinearLayout
2.2.2.相對布局RelativeLayout
2.2.3.列表視圖ListView
2.2.4.網格視圖GridView
2.3.輸入控件InputControls
2.3.1.按鈕Buttons
2.3.2.文本區域TextFields
2.3.3.復選框Checkboxes
2.3.4.單選按鈕RadioButtons
2.3.5.開關按鈕ToggleButtons
2.3.6.下拉列表Spinners
2.3.7.選擇器Pickers
2.4.輸入事件InputEvents
2.5.菜單Menus
2.6.動作條ActionBar
2.7.設置Settings
2.8.對話框Dialogs
2.9.狀態通知Notifications
2.10.Toast通知Toasts
2.11.搜索Search
2.11.1.創建一個搜索界面CreatingaSearchInterface
2.11.2.增加當前搜索提醒AddingRecentQuerySuggestions
2.11.3.增加個性化提醒AddingCustomSuggestions
2.11.4.搜索配置SearchableConfiguration
2.12.拖放操作DragandDrop
2.13.可訪問性Accessibility
2.13.1.應用程序的可訪問性MakingApplicationsAccessible
2.13.2.構建可訪問性服務BuildingAccessibilityServices
2.14.風格和主題StylesandThemes
2.15.自定義控件CustomComponents
3.應用程序資源AppResources
3.1.概述Overview
3.2.提供的資源ProvidingResources
3.3.對資源的訪問AccessingResources
3.4.運行時變化的處理HandlingRuntimeChanges
3.5.本地化Localization
3.6.資源類型ResourceTypes
3.6.1.動畫Animation
3.6.2.狀態顏色列表ColorStateList
3.6.3.圖形處理類資源Drawable
3.6.4.布局Layout
3.6.5.菜單Menu
3.6.6.字符串String
3.6.7.樣式Style
3.6.8.其他類型MoreTypes
4.動畫和圖形AnimationandGraphics
4.1.概述Overview
4.2.屬性動畫PropertyAnimation
4.3.補間動畫ViewAnimation
4.4.幀動畫DrawableAnimation
4.5.畫布和繪制CanvasandDrawables
4.6.OpenGLOpenGLES
4.7.硬件加速HardwareAcceleration
5.高性能計算Computation
5.1.RenderScript編程RenderScript
5.2.RenderScript編程進階AdvancedRenderScript
5.3.運行時API說明RuntimeAPIReference
6.多媒體和照相機MediaandCamera
6.1.媒體播放MediaPlayback
6.2.支持的媒體格式SupportedMediaFormats
6.3.音頻捕獲AudioCapture
6.4.JET引擎JetPlayer
6.5.照相機Camera
7.定位和傳感器LocationandSensors
7.1.定位和地圖LocationandMaps
7.2.定位策略LocationStrategies
7.3.傳感器概述SensorsOverview
7.4.手勢傳感器MotionSensors
7.5.位置傳感器PositionSensors
7.6.環境傳感器EnvironmentSensors
8.通信Connectivity
8.1.藍牙Bluetooth
8.2.NFC通信NFC
8.2.1.NFC基礎NFCBasics
8.2.2.NFC進階AdvancedNFC
8.3.Wi-FI直連Wi-Fi2P
8.4.USB通信USB
8.4.1.附件模式Accessory
8.4.2.主機模式Host
8.5.SIP協議SIP
9.文本輸入法TextandInput
9.1.復制和粘貼CopyandInput
9.2.創建一個輸入法CreatinganIME
9.3.拼寫檢查器SpellingChecker
10.數據存儲DataStorage
10.1.存儲選項StorageOptions
10.2.數據備份DataBackup
10.3.應用程序安裝位置AppinstallLocaiton
11.系統管理員Administration
11.1.硬件管理DevicePolicies
12.web應用WebApps
12.1.概述Overview
12.2.web應用的屏幕適配TargetingScreensfromWebApps
12.3.利用webview構建web應用BuildingWebAppsinWebView
12.4.調試web應用DebuggingWebApps
12.5.web應用的優化BestPracticesforWebApps
13.更好的策略
13.1.一致性(兼容性)Compatibility
13.2.支持多屏幕SupportingMultipleScreens
13.2.1.適配指定屏幕DistributingtoSpecificScreens
13.2.2.屏幕兼容模式ScreenCompatibilityMode
13.3.支持平板和手機SupportingTabletsandHandsets
14.Google提供的服務GoogleServices
14.1.應用程序內部付費機制
14.2.應用程序內部付費機制概述
14.3.如何使用應用程序付費服務
14.4.訂閱機制
14.5.安全與設計
14.6.測試應用程序付費服務
14.7.應用程序付費機制的管理
14.8.應用程序付費的相關API
14.9.應用程序許可機制
14.10.許可機制概述
14.11.設置許可機制
14.12.在應用中增加許可
14.13.許可機制API
14.14.Google軟件商店服務
14.15.在GooglePlay中加過濾器
14.16.多APK支持
14.17.對APK附加文件的服務
14.18.Google雲消息服務
14.19.如何使用google雲服務
14.20.架構概述
14.21.演示教程
14.22.Google雲服務進階
14.23.信息遷移
二、布局的介紹:【了解】
1、在4.0以前版本中一共有五種布局,都是ViewGroup的子類。分別是AbsoluteLayout、RelativeLayout、LinearLayout、FrameLayout、TableLayout。而TableLayout是LinearLayout的子類。(中文分別是:絕對布局、相對布局、線性布局、幀布局、表格布局)。
2、在2.2操作系統中將AbsoluteLayout過期。而目前TableLayout也逐漸少用。
3、在4.0之後又新增GridLayout。(GridLayout最經典的案例是計算器界面)
總之,Android中一共有六種布局。目前推薦使用RelativeLayout、LinearLayout、GridLayout三種布局。
三、View類的常用xml屬性:
(一)、類結構:
java.lang.Object
? android.view.View
(二)、View及其子元素常用屬性:(各種布局及控件的共同屬性)
- android:id
- android:background
- android:onClick 為該控件的單擊事件綁定監聽器
- android:padding 設置控件四周的填充區域
- android:visibility 設置該控件是否可見(invisible/visible/gone)
- android:alpha 設置該組件透明度(0-1之間的數值)
- android:layout_height 子組件的布局高度
- android:layout_width 子組件的布局寬度
- android:layout_margin 設置子組件的外邊距
四、LinearLayout:【掌握】
(一)、概念:線性布局控制其中的控件或組件橫向或縱向排列。在線性布局布局中,每一行或每一列只能放單獨一個控件。線性布局不會換行。當控件排列到窗體邊緣,後面的控件就被隱藏,而不會顯示出來。
線性布局的默認方向是水平方向(Horizontal),還有一個選項是vertical。
(二)、LinearLayout的常用屬性:
1.android:orientation 定義布局內控件或組件的排列方式
可選項:vertical 、 horizontal
2.android:layout_width 定義控件的寬度
可選項:fill_parent / match_parent/ wrap_content/絕對數值
備注:fill_parent / match_parent的效果完全一致,都是填充整個父控件。但是自2.2版本開始推薦使用match_parent。wrap_content指的是該控件的寬度正好包裹內容物。
3.android:layout_height 定義控件的高度
可選項:fill_parent / match_parent/ wrap_content/絕對數值
備注:fill_parent / match_parent的效果完全一致,都是高度填充整個父控件。wrap_content指的是該控件的高度正好包裹內容物。
4.android:id 設置控件的id。這樣就可以在R.java中自動生成相應的值,在程序中通過findViewById就可以調用。
設置id的格式為:android:id = "@+id/id的名字"
5.android:background 設置控件的背景顏色或背景圖片
例如:android:background="#ffffff"
android:background="@drawable/圖片名稱"
【備注:】
顏色有RGB顏色格式和ARGB格式。RGB是紅綠藍三原色。而ARGB是帶alpha的三原色,即有透明度的三原色。
#FFFFFF 代表白色
#000000 黑色
#FFFFFFFF 完全不透明
#00FFFFFF 完全透明
#88FFFFFF 半透明
6.android:layout_weight 設置控件的權重。即各控件在水平或者垂直方向上平均分配。
備注:如果是水平方向設置權重,要將android:layout_width設置為0dp,如果是垂直方向上使用權重,要將android:layout_height設置為0dp。否則權重容易受到高度或寬度的干擾而出現偏差。
7.android:gravity 該屬性用來控制該View的內容物的位置。
如果該屬性是定義在布局節點中,則該布局中所有控件的位置都受到這個屬性的控制。
如果該屬性出現在Button、TextView、EditText等控件中,則用來控制這些控件上的文字的位置。
可選項有:top、bottom、left、right、center_vertical、fill_vertical 、 center、fill等等。
【備注:】本屬性與android:layout_gravity不同。
8.android:layout_gravity 該屬性用於設置控件相對於容器的對齊方式。
可選項有:top、bottom、left、right、center_vertical、center_horizontal 、fill_vertical 、center、fill等等。
這些可選項中不是適用於每一種布局。在垂直線性布局中,android:gravity為bottom不起作用;而水平線性布局中,android:gravity為right不起作用。
【備注:】而本屬性是android:layout_gravity屬性,與 android:gravity屬性不同。
(三)、LinearLayout的特有屬性:【重新歸納:去除公共屬性後的特有屬性】
1、android:orientation 布局管理器內組件的排列方式
2、android:gravity 設置布局管理器內組件的對齊方式
3、android:weightSum
(四)、 LinearLayout子元素的特有屬性:
1、android:layout_weight 子元素在 LinearLayout中所占的權重
2、android:layout_gravity 子元素在 LinearLayout中的對齊方式
五、RelativeLayout:【掌握】
(一)、概念:指按著控件之間的相對位置來進行布局。
(二)、RelativeLayout特有屬性:
1、android:gravity 設置布局容器內子控件的對齊方式
2、android:ignoreGravity 設置布局管理器內哪個控件不受gravity屬性的影響
(三)、RelativeLayout子元素的特有屬性:LayoutParams
怕;
- layout_toRightOf 該控件在哪個控件的右側
- layout_toLeftOf 該控件在哪個控件的左側
- layout_above 該控件在哪個控件的上側
- layout_below 該控件在哪個控件的下側
B、第二組:指兄弟控件之間的對齊關系。該組屬性的值是另一個控件的id。
- layout_alignRight 該控件與哪個控件的右對齊
- layout_alignLeft 該控件與哪個控件的左對齊
- layout_alignTop 該控件與哪個控件的頂對齊
- layout_alignBottom 該控件與哪個控件的底對齊
C、第三組:指控件與父布局之間的對齊關系。該組屬性的值是true或者false。
- layout_alignParentRight 該控件與父布局控件的右對齊嗎?
- layout_alignParentLeft 該控件與父布局控件的左對齊嗎?
- layout_alignParentTop 該控件與父布局控件的頂端對齊嗎?
- layout_alignParentBottom 該控件與父布局控件的底部對齊嗎?
- layout_centerInParent 該控件位於父布局控件的中心位置嗎?
- layout_centerVertical 該控件位於父布局控件的垂直中心位置嗎?
- layout_centerHorizontal 該控件位於父布局控件的水平中心位置嗎?
六、GridLayout:網格布局
(一)、GridLayout布局屬性:
1、android:alignmentMode
屬性說明:設置布局的對齊模式。可以取以下值:
alignBounds -- 對齊子視圖邊界。
alignMargins -- 對齊子視圖邊距。
2、android:columnCount
屬性說明:GridLayout的最大列數
3、android:rowCount
屬性說明:GridLayout的最大行數
4、android:orientation
屬性說明:GridLayout中子元素的布局方向。有以下取值:
horizontal -- 水平布局。
vertical -- 豎直布局。
5、android:columnOrderPreserved
屬性說明: 設置該網格布局是否保留列序號。默認是true。
6、android:rowOrderPreserved
屬性說明:設置該網格布局是否保留行序號。默認是true。
7、android:useDefaultMargins
屬性說明: 設置GridLayout使用默認的邊距。默認值是false。
(二)、GridLayout子元素的屬性:
1、android:layout_column
屬性說明: 顯示該控件的列。例如,android:layout_column="0",表示在第1列顯示該控件;android:layout_column="1",表示在第2列顯示該控件。
2、android:layout_row
屬性說明: 該控件所在行。例如,android:layout_row="0",表示在第1行顯示該控件;android:layout_row="1",表示在第2行顯示該控件。它和 android:layout_column類似。
3、android:layout_columnSpan
屬性說明: 列合並。即該控件所占的列數。例如,android:layout_columnSpan="2",表示該控件占2列。
4、android:layout_rowSpan
屬性說明: 行合並。即該控件所占的行數。例如,android:layout_rowSpan="2",表示該控件占2行。
5、android:layout_gravity
屬性說明:該控件的布局方式。選項值:
- top -- 控件置於容器頂部,不改變控件的大小。
- bottom -- 控件置於容器底部,不改變控件的大小。
- left -- 控件置於容器左邊,不改變控件的大小。
- right -- 控件置於容器右邊,不改變控件的大小。
- center_vertical -- 控件置於容器豎直方向中間,不改變控件的大小。
- fill_vertical -- 如果需要,則往豎直方向延伸該控件。
- center_horizontal -- 控件置於容器水平方向中間,不改變控件的大小。
- fill_horizontal -- 如果需要,則往水平方向延伸該控件。
- center -- 控件置於容器中間,不改變控件的大小。
- fill -- 如果需要,則往水平、豎直方向延伸該控件。
- clip_vertical -- 垂直剪切,剪切的方向基於該控件的top/bottom布局屬性。若該控件的gravity是豎直的:若它的gravity是top的話,則剪切該控件的底部;若該控件的gravity是bottom的,則剪切該控件的頂部。
- clip_horizontal -- 水平剪切,剪切的方向基於該控件的left/right布局屬性。若該控件的gravity是水平的:若它的gravity是left的話,則剪切該控件的右邊;若該控件的gravity是 right的,則剪切該控件的左邊。
- start -- 控件置於容器的起始處,不改變控件的大小。
- end -- 控件置於容器的結束處,不改變控件的大小。
七、Android UI控件及UI組件:
(一)、控件名稱:【標紅色的為常用的】
- TextView 文本視圖
- EditText 文本編輯框
- Button 按鈕
- ImageView、Gallery 圖像視圖、畫廊(建議過期)
- ImageButton 圖片按鈕
- ToggleButton 、Switch 開關按鈕、開關
- RadioButton 單選按鈕
- CheckBox 多選框
- Spinner 下拉列表
- AutoCompleteTextView 自動完成文本框
- ProgressBar 進度條
- SeekBar 拖動條
- RatingBar 星級評分條
- TimePicker、DatePicker 時間選擇器、日期選擇器
- AnalogClock、DigitalClock 模擬時鐘、數字時鐘
- Dialog(AlertDialog、ProgressDialog、TimePickerDialog、DatePickerDialog)提示對話框、進度對話框、時間選擇對話框、日期選擇對話框
- ListView、GridView 列表視圖【最重要的UI組件】、 網格視圖
- ScrollView 滾動視圖
- ExpandableListView 可展開列表視圖
- WebView 網頁視圖
- SearchView 搜索框
- TabHost 書簽選項卡
- Notification 、Toast 通知、吐司(短時提醒)
- Menu(OptionMenu /SubMenu、ContextMenu) 菜單(選項菜單、上下文菜單)
- ImageSwitcher、TextSwitcher 、 ViewPager圖像切換器、文本切換器
- ActionBar 動作導航條
八、基本控件:——TextView:
(一)、TextView類結構:
java.lang.Object
? android.view.View
? android.widget.TextView
(二)、TextView常用屬性:
1、andorid:text 設置文本的內容
2、 android:textColor 設置文本的顏色
3、 android:textSize 設置文本的字體大小(sp)
4、andorid:height 設置文本的高度,以像素為單位
5、 android:width 設置文本的寬度,以像素為單位
6、 android:inputType 設置文本的類型。例如是普通文本,還是email,password,數字等等。
7、 android:singleLine 設置文本是否是單行顯示。
8、android:gravity 設置文本框內文本的對齊方式。可選項有:top、bottom、left、right、center、fill、center_vertical、center_horizontal、fill_horizontal等等。這些屬性值也可以同時指定,各屬性值之間用豎線隔開。例如right|bottom
9、android:drawableLeft 用於在文本框左側繪制圖片。該屬性值通過“@drawable/圖片文件名”來設置。
10、android:drawableRight 用於在文本框左側繪制圖片。該屬性值通過“@drawable/圖片文件名”來設置。
11、android:drawableTop 用於在文本框左側繪制圖片。該屬性值通過“@drawable/圖片文件名”來設置。
12、android:drawableBottom 用於在文本框左側繪制圖片。該屬性值通過“@drawable/圖片文件名”來設置。
13、android:autoLink 給指定的文本增加可單擊的超鏈接。可選項為:none、web、email、phone、map和all。
多個選項之間使用“|”分隔,也可以使用all。
14、android:hint 設置當文本框內文本內容為空時,默認顯示的提示性文字。
【補充:】
1、android:textAllCaps="true" 設置所有字母都大小
2、android:ellipsize="end" 文字過長,設置省略號。可選項:start , end ,middle,marquee
- android:ellipsize="start" 省略號在開頭
- android:ellipsize="middle" 省略號在中間
- android:ellipsize="end" 省略號在結尾
- android:ellipsize="marquee" 跑馬燈顯示
【備注:】要實現跑馬燈效果。要同時具有以下屬性。
- android:ellipsize="marquee"
- android:singleLine="true"
- android:focusable="true"
- android:focusableInTouchMode="true"
- android:marqueeRepeatLimit="marquee_forever"
九、基本控件:——EditText:
(一)、 EditText類結構:
java.lang.Object
? android.view.View
? android.widget.TextView
? android.widget.EditText
所以 EditText繼承了TextView的所有屬性。
(二)、android:inputType的可選項:
- android:inputType="textPersonName"
- android:inputType="textPassword"
- android:inputType="numberPassword" 只可以輸入數字
- android:inputType="textEmailAddress"
- android:inputType="phone" 只允許輸入數字,括號等特殊符號,不可以輸入字母。
- android:inputType="textPostalAddress"
- android:inputType="time"
- android:inputType="date"
- android:inputType="number"
十、基本控件:——Button:
(一)、Button類結構:
java.lang.Object
? android.view.View
? android.widget.TextView
? android.widget.Button
所以Button繼承了TextView的所有屬性。
【特別補充:】sp、dp、dip、pt、px等單位的區別?【重點】
- dpi dpi指像素密度。dots per inch ,即每英寸內像素點的個數。它不是表示長度的單位。
- 在android中認為:低(120dpi),中(160dpi),高(240dpi),超高(320dpi)。隨著技術的增長,實際dpi已經超出這個定義范圍。
- dip device independent pixels ,即與設備無關的像素。目前這個單位已經被dp所取代,而不建議使用dip。
- dp 與dip的概念一樣。不過dp已經取代了dip。在Android中用來表示非文字大小的尺寸。例如:外邊距、內填充等。
- px = dp * (dpi / 160)
- 3.7寸屏幕,分辨率320*480手機上,正好1px = 1dp。
- sp scale independent pixel ,即與縮放比例無關的像素。在android中常用來表示文字大小。
- px 表示像素。因為同樣是200px,但是在不同手機下顯示的大小是不同的。
- pt point磅。1磅=1/74英寸
- xlarge 屏幕至少:960dp x 720dp
- large 屏幕至少 :640dp x 480dp
- normal 屏幕至少 :480dp x 320dp
- small 屏幕至少 :426dp x 320dp
- 總之:dp是用來定義非文字的尺寸,sp用來定義文字大小。px只用於產生一條一像素的分割線時使用。