天天看點

Android02_Android常用布局及基本UI控件

Android 常用布局及基本UI控件      

一、Android學習API指南:【了解】

1. 應用的組成部分   App Components

1.1. 應用的基本原理    App Fundamentals

1.2. Activity      Activities

1.2.1. 片段    Fragments

1.2.2. 加載器     Loaders

1.2.3. 任務和傳回堆    Tasks and Back Stack

1.3. Service服務   Services

1.3.1. 綁定服務     Bound Services

1.3.2. AIDL   Android Interface Definition Language 

1.4. 内容提供器    Content Providers

1.4.1. 内容提供器基礎   Content Providers Basics

1.4.2. 建立一個内容提供器     Creating a Content Provider

1.4.3. 月曆提供器    Calendar Provider

1.4.4. 通信錄提供器   Contact Provider

1.5. 意圖和意圖過濾器    Intents and Intents Filters

1.6. 程序和線程    Process and Threads 

1.7. 權限系統    Permissions

1.8. 視窗小部件    App Widgets

1.9. Android清單    Android Manifest

2. 使用者界面     User Interface

2.1. 概述    Overview

2.2. 布局    Layout

2.2.1. 線形布局    Linear Layout

2.2.2. 相對布局    Relative Layout

2.2.3. 清單視圖    ListView

2.2.4. 網格視圖    GridView

2.3. 輸入控件   Input Controls

2.3.1. 按鈕    Buttons

2.3.2. 文本區域    Text Fields   

2.3.3. 複選框    Checkboxes

2.3.4. 單選按鈕   Radio Buttons

2.3.5. 開關按鈕   Toggle Buttons

2.3.6. 下拉清單   Spinners

2.3.7. 選擇器    Pickers

2.4. 輸入事件   Input Events

2.5. 菜單   Menus

2.6. 動作條   Action Bar

2.7. 設定     Settings

2.8. 對話框   Dialogs

2.9. 狀态通知    Notifications

2.10. Toast通知   Toasts   

2.11. 搜尋   Search

2.11.1. 建立一個搜尋界面    Creating a Search Interface

2.11.2. 增加目前搜尋提醒  Adding Recent Query Suggestions

2.11.3. 增加個性化提醒   Adding Custom Suggestions

2.11.4. 搜尋配置   Searchable Configuration

2.12. 拖放操作    Drag and Drop

2.13. 可通路性    Accessibility

2.13.1. 應用程式的可通路性   Making Applications Accessible

2.13.2. 建構可通路性服務   Building Accessibility Services

2.14. 風格和主題   Styles and Themes

2.15. 自定義控件   Custom Components

3. 應用程式資源   App Resources

3.1. 概述   Overview

3.2. 提供的資源   Providing Resources

3.3. 對資源的通路   Accessing Resources

3.4. 運作時變化的處理   Handling Runtime Changes

3.5. 本地化   Localization

3.6. 資源類型   Resource Types

3.6.1. 動畫   Animation

3.6.2. 狀态顔色清單    Color State List

3.6.3. 圖形處理類資源   Drawable

3.6.4. 布局   Layout

3.6.5. 菜單   Menu

3.6.6. 字元串   String

3.6.7. 樣式    Style

3.6.8. 其他類型   More Types

4. 動畫和圖形    Animation  and Graphics

4.1. 概述   Overview

4.2. 屬性動畫   Property Animation

4.3. 補間動畫   View Animation

4.4. 幀動畫    Drawable Animation

4.5. 畫布和繪制   Canvas and Drawables

4.6. OpenGL    OpenGL  ES

4.7. 硬體加速   Hardware Acceleration

5. 高性能計算   Computation

5.1. RenderScript程式設計   RenderScript 

5.2. RenderScript程式設計進階    Advanced RenderScript

5.3. 運作時API說明    Runtime API Reference

6. 多媒體和照相機     Media and Camera

6.1. 媒體播放    Media Playback

6.2. 支援的媒體格式    Supported Media Formats

6.3. 音頻捕獲    Audio Capture

6.4. JET引擎    JetPlayer

6.5. 照相機      Camera

7. 定位和傳感器    Location and Sensors

7.1. 定位和地圖    Location and Maps

7.2. 定位政策    Location Strategies

7.3. 傳感器概述    Sensors Overview

7.4. 手勢傳感器    Motion Sensors

7.5. 位置傳感器    Position Sensors

7.6. 環境傳感器    Environment Sensors

8. 通信   Connectivity

8.1. 藍牙   Bluetooth

8.2. NFC通信   NFC

8.2.1. NFC基礎   NFC Basics

8.2.2. NFC進階   Advanced NFC

8.3. Wi-FI直連  Wi-Fi 2P

8.4. USB通信  USB

8.4.1. 附件模式 Accessory

8.4.2. 主機模式  Host

8.5. SIP協定   SIP

9. 文本輸入法   Text and Input

9.1. 複制和粘貼    Copy and Input

9.2. 建立一個輸入法    Creating an IME

9.3. 拼寫檢查器    Spelling Checker

10. 資料存儲   Data Storage

10.1. 存儲選項   Storage Options

10.2. 資料備份   Data Backup

10.3. 應用程式安裝位置   App install Locaiton

11. 系統管理者   Administration

11.1. 硬體管理   Device  Policies

12. web應用   Web Apps

12.1. 概述    Overview

12.2. web應用的螢幕适配   Targeting Screens from Web Apps

12.3. 利用webview建構web應用   Building Web Apps in WebView

12.4. 調試web應用   Debugging Web Apps

12.5. web應用的優化   Best Practices for Web Apps 

13. 更好的政策

13.1. 一緻性(相容性)  Compatibility

13.2. 支援多螢幕   Supporting Multiple Screens

13.2.1. 适配指定螢幕    Distributing to Specific Screens

13.2.2. 螢幕相容模式    Screen Compatibility Mode

13.3. 支援平闆和手機   Supporting Tablets and Handsets

14. Google提供的服務  Google Services 

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. 在Google Play中加過濾器 

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及其子元素常用屬性:(各種布局及控件的共同屬性)

  1. android:id
  2. android:background 
  3. android:onClick     為該控件的單擊事件綁定監聽器
  4. android:padding    設定控件四周的填充區域
  5. android:visibility    設定該控件是否可見(invisible/visible/gone)
  6. android:alpha        設定該元件透明度(0-1之間的數值)
  7. android:layout_height      子元件的布局高度
  8. android:layout_width        子元件的布局寬度
  9. 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     A、第一組:指 兄弟控件之間的相對位置。該組屬性的值是另一個控件的id。

  1. layout_toRightOf      該控件在哪個控件的右側
  2. layout_toLeftOf        該控件在哪個控件的左側
  3. layout_above           該控件在哪個控件的上側
  4. layout_below            該控件在哪個控件的下側

    B、第二組:指 兄弟控件之間的對齊關系。該組屬性的值是另一個控件的id。

  1. layout_alignRight      該控件與哪個控件的右對齊
  2. layout_alignLeft        該控件與哪個控件的左對齊
  3. layout_alignTop        該控件與哪個控件的頂對齊
  4. layout_alignBottom   該控件與哪個控件的底對齊

    C、第三組:指 控件與父布局之間的對齊關系。該組屬性的值是true或者false。

  1. layout_alignParentRight               該控件與父布局控件的右對齊嗎?
  2. layout_alignParentLeft                 該控件與父布局控件的左對齊嗎?
  3. layout_alignParentTop                 該控件與父布局控件的頂端對齊嗎?
  4. layout_alignParentBottom            該控件與父布局控件的底部對齊嗎?
  5. layout_centerInParent                  該控件位于父布局控件的中心位置嗎?
  6. layout_centerVertical                    該控件位于父布局控件的垂直中心位置嗎?
  7. 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元件: (一)、控件名稱:【标紅色的為常用的】

  1. TextView        文本視圖
  2. EditText         文本編輯框
  3. Button            按鈕
  4. ImageView、Gallery   圖像視圖、畫廊(建議過期)
  5. ImageButton    圖檔按鈕
  6. ToggleButton 、Switch    開關按鈕、開關
  7. RadioButton    單選按鈕
  8. CheckBox       多選框
  9. Spinner           下拉清單
  10. AutoCompleteTextView   自動完成文本框
  11. ProgressBar    進度條
  12. SeekBar          拖動條
  13. RatingBar        星級評分條
  14. TimePicker、DatePicker   時間選擇器、日期選擇器
  15. AnalogClock、DigitalClock    模拟時鐘、數字時鐘
  16. Dialog(AlertDialog、ProgressDialog、TimePickerDialog、DatePickerDialog)提示對話框、進度對話框、時間選擇對話框、日期選擇對話框
  17. ListView、GridView        清單視圖【最重要的UI元件】、 網格視圖 
  18. ScrollView      滾動視圖
  19. ExpandableListView   可展開清單視圖
  20. WebView        網頁視圖
  21. SearchView    搜尋框
  22. TabHost         書簽頁籤
  23. Notification 、Toast         通知 、 吐司(短時提醒)    
  24. Menu(OptionMenu /SubMenu、ContextMenu)    菜單(選項菜單、上下文菜單)
  25. ImageSwitcher、TextSwitcher   、   ViewPager 圖像切換器、文本切換器
  26. ActionBar        動作導覽列

八、基本控件:——TextView: (一)、TextView類結構: java.lang.Object    ↳ android.view.View     ↳ android.widget.TextView

Android02_Android常用布局及基本UI控件

(二)、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的可選項:

  1. android:inputType="textPersonName" 
  2. android:inputType="textPassword" 
  3. android:inputType="numberPassword"      隻可以輸入數字
  4. android:inputType="textEmailAddress" 
  5. android:inputType="phone"      隻允許輸入數字,括号等特殊符号,不可以輸入字母。
  6. android:inputType="textPostalAddress"   
  7. android:inputType="time" 
  8. android:inputType="date" 
  9. android:inputType="number" 

十、基本控件:——Button: (一)、Button類結構: java.lang.Object    ↳ android.view.View      ↳ android.widget.TextView        ↳ android.widget.Button

 是以Button繼承了TextView的所有屬性。

【特别補充:】 sp、dp、dip、dpi 、 pt、px等機關的差別?【 重點】

  1. dpi    dpi指像素密度。dots per inch  ,即每英寸内像素點的個數。它不是表示長度的機關。
    • 在android中認為:低(120dpi),中(160dpi),高(240dpi),超高(320dpi)。随着技術的增長,實際dpi已經超出這個定義。
  2. dip    dimension independent pixels  ,即與裝置無關的像素。目前這個機關已經被dp所取代,而不建議使用dip。
  3. dp     與dip的概念一樣。不過dp已經取代了dip。在Android中用來表示非文字大小的尺寸。例如:外邊距、内填充等。
    • px = dp * (dpi / 160)
    • 3.7寸螢幕,分辨率320*480手機上,正好1px = 1dp。
  4. sp      scale  independent  pixel  ,即與縮放比例無關的像素。在android中常用來表示文字大小。
  5. px      表示像素。因為同樣是200px,但是在不同手機下顯示的大小是不同的。
  6. pt      point磅。1磅=1/74英寸
  • xlarge 螢幕至少:960dp x 720dp 
  • large 螢幕至少 :640dp x 480dp 
  • normal 螢幕至少 :480dp x 320dp 
  • small 螢幕至少 :426dp x 320dp
  • 總之:dp是用來定義非文字的尺寸,sp用來定義文字大小。px隻用于産生一條一像素的分割線時使用。

Google官方指定按照下列标準進行區分:

名稱 像素密度
mdpi 160dpi
hdpi 240dpi
xhdpi 320dpi
xxhdpi 480dpi
xxxhdpi 640dpi

以圖示設計為例進行介紹

Android02_Android常用布局及基本UI控件

十一、當天作業: 1、用三種常用布局分别實作計算機的界面:

Android02_Android常用布局及基本UI控件

2、用布局實作使用者注冊的界面: