Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android控件篇

Android控件篇

編輯:關於Android編程

1.Activity類控件

\

(1)ListActivity控件

1)ListActivity控件概述

ListActivity可以用來實現列表功能。在android中,ListActivity提供了對基本的單行、雙行列表的封裝,同時支持自定義列表。自定義列表主要是基於ListView來實現的,為了方便起見,在此一並介紹。

2)ListActivity控件實現步驟

實現一個列表包括3步:選擇或自定義列表項布局文件、實現適配器並加載數據、為ListActivity設置適配器。

3)ListView布局文件

當ListView沒有數據顯示時,TextView顯示出來,同時ListView會被影藏(只有在ListActivity中才有此效果,在Activity中必須自行設置)。

基於單行布局的simple_list_item_1布局文件、基於簡單雙行布局的simple_list_item_2布局文件、基於單行單選布局的simple_list_item_single_choice布局文件、基於單行多選布局的simple_list_item_multiple_choice布局文件、類似樹狀圖的simple_expandable_list_item_1/simple_expandable_list_item_2布局文件等。

(2)PreferenceActivity控件

1)PreferenceActivity控件概述

PreferenceActivity主要用於實現偏好設置,在布局上PreferenceActivity以PreferenceCreen為根布局,支持CheckBoxPreference等多種形式的偏好設置,這些偏好值默認存儲於應用的SharePreference中,通過getSharedPreference可以獲取SharedPreferences對象,通過Preference.OnPreferenceChangeListener監聽器可以監聽到偏好值得變化。

2)CheckBoxPreference控件

提供了進行二選一偏好的方法,還支持偏好的說明。

3)DialogPreference控件

DialgPreference僅作為一個借口存在,如果借助DialogPreference實現更加復雜的偏好必須繼承DialogPreference。

4)EditTextPreference控件

提供支持輸入框的偏好設置的功能,通過getEditText方法可以獲得輸入框的內容,通過getText方法可以獲得SharedPreference中存儲的偏好值,通過setText方法可以將偏好值保存在SharedPreferences中。

5)ListPreference控件

當某個偏好有多個偏好值可選時,ListPreference就派上用場了,在使用ListPreference是需要注意entries和entryValue屬性,其中entries表示界面的內容,而entryValue對應的是實際偏好值。

6)RingtonePreference控件

用於設置鈴聲的特殊偏好控件,目前Android提供的鈴聲類型包括ringtong、notification、alarm和all等。其中all表示所有可用的鈴聲。

7)PreferenceCategory控件

提供了偏好組的功能。

3)TabActivity控件

 

2.適配器

\

(1)適配器類型

目前Android支持兩種類型的適配器:基本適配器(BaseAdapter)和游標適配器(CursorAdapter)。基本適配器是最通用的適配器,游標適配器是用來適配數據庫的數據流的,其他的系統級適配器都是繼承自這兩種適配器。

(2)BaseAdapter適配器

BaseAdapter適配器是基本的適配器,是其他適配器的基類。實際開發中會調用BaseAdapter的子類或通過BaseAdapter自定義適配器來實現視圖與數據的適配功能。

(3)ArrayAdapter適配器

在默認情況下,ArrayAdapter假定整個布局文件為一個TextView,只有指定了mFiledId,ArrayAdapter才認為加載了一個自定義布局。ArrayAdapter的實現有很強的局限性,僅能顯示單行的列表。

(4)SimpleCursorAdapter適配器

在SimpleCursorAdapter的初始化和setViewBinder的實現過程中指定了布局文件、游標、數據項、控件ID等,但是沒有處理布局加載和數據綁定,在bindView的實現中處理了布局加載和數據綁定。

從bindView的實現中可以看出,ViewBinder實際上是用戶的一個自定義實現接口,當用戶沒有進行自定義實現時,會通過傳遞的控件數量進行默認數據綁定。

支持圖片加載,不過這時通過游標獲取的不再是文本數據,而是圖片的URL。

在進行普通數據庫數據加載時比較復雜的場景也可以利用SimpleCursorAdapter而非自定義適配器來實現。當默認數據綁定無法滿足需求時,可以使用ViewBinder。

(5)適配器處理流程

\

在BaseAdapter適配器中,應用了設計模式的觀察者模式(Observer Pattern),當數據源發生變化時,可以通知顯示控件自行刷新。

通過分析,AdapterDataSetObserver是AdapterView的一個私有類,在開發者為ListView設置適配器時,ListView會通過適配器注冊觀察器,當開發者調用適配器的notifyDataSetChanged方法時,ListView會收到數據源變化的通知,進行自行刷新。

在數據庫適配器中數據發生變化時,應重新獲取游標(Cursor),然後在調用notifyDataSetChanged方法進行數據刷新。

(6)自定義適配器

1)基於BaseAdapter的自定義適配器

對於基於BaseAdapter的自定義適配器,需要重點關注getView=方法的實現,getView方法完成的主要工作是列表項布局文件的加載和數據的綁定。需要注意的是,只有convertView為空時加載布局文件,這樣可以避免無謂的性能損耗,這是優化ListView顯示的一個重要方法。

2)基於CursorAdapter的自定義適配器

基於CursorAdapter的自定義適配器的實現重點在於bingView方法和newView方法。其中bingView方法用於綁定數據,newView方法用於加載布局文件。

考慮到加載列表項時多次操作findViewById方法,對性能有所影響,因此在Android中設計ViewHolder,以其來進行優化。通過View的setTag方法和getTag方法可大幅度提高顯示速率,這樣是優化ListView顯示的一種重要方法。

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved