學習筆記|AS入門(五) 高級控件篇(中)

本篇繼續學習高級控件及獨具特點的監聽器,目錄以下:

  • ScrollView 滾動視圖
  • ProgressBar 進度條
  • ProgressDialog 對話框形式進度條
  • SeekBar 可拖動進度條
  • DataPicker 日曆選擇器
  • DataPickerDialog 對話框形式日曆選擇器
  • TimePicker 時間選擇器
  • TimePickerDialog 對話框形式時間選擇器

1.ScrollView 滾動視圖android

當展現的內容不少屏幕顯示不下時就須要用ScrollView來顯示完整的視圖。下圖對比了有無ScrollView兩種不一樣的狀況:佈局

能夠看到當整個頁面只有一個TextView時由於內容不完整視覺上感受很很差,若是加上ScrollView,用戶就能夠滑動滾動條看到後面的內容。ScrollView使用起來也很容易,只要將TextView做爲它的子標籤就能夠了,若是不想看到滾動條,能夠設置屬性android:scrollbars="none"隱藏起來。另外,根據須要也可使用水平滾動視圖HorizantalScrollView,替換SrollView標籤就能夠了。post

以後在MainActivity獲取TextView實例並set內容,運行以後就能看到以前的效果了。學習

再介紹一個監聽器OnTouchListener,它能夠監聽ScrollView滑行狀況,好比但願用戶看完文本後繼續添加一些文本內容,那麼就能夠在監聽到ScrollView到達底部的事件後作出相應的動做,代碼見下:3d

有必要對上述代碼作一些解釋:從 event.getAction() 能夠監聽到滑塊各類狀態,其中一種狀態 MotionEvent.ACTION_MOVE 表示滑塊在滑動的過程當中。接下來在判斷文本處於最頂端仍是最低端時,使用了ScrollView三個測量高度的方法: scrollView.getChildAt(0).getMeasuredHeight() 表示ScrollView第一個子標籤即TextView文本內容總長度, scrollView.getHeight() 表示ScrollView高度即屏幕總高度, scrollView.getScrollY() 表示滾動條滑動距離。易得出當滑動距離+屏幕總高度=文本總長度時,正好到達文本最低端。調試結果如圖:調試

2.ProgressBar 進度條cdn

ProgressBar一般用於展現某個耗時操做完成的進度,來更好的提高用戶界面的友好性。首先來學習ProgressBar幾個關鍵屬性:對象

max:最大顯示進度 progress:第一顯示進度 secondaryProgress:第二顯示進度 三者關係見圖:blog

style:進度條的類型,上圖顯示了四種常見的類型--大、中、小環形進度條以及水平進度條。其實每種類型的進度條顯示風格也是多種多樣的,以水平進度條舉例,實際上style可選值中 @android:style/ 下系統還提供了更多可選風格,好比選擇第一項:事件

進度條就換了個風格。

ctrl點進去看這個style源碼,發現整個進度條風格由不少Item共同組成,好比經過第二項progressDrawable就能夠實現自定義一個進度條樣式了。

介紹完ProgressBar幾個關鍵屬性後,再經過一個小demo學習它的幾個關鍵方法。在佈局裏準備三個button和一個textview,用於控制進度條加減和重置以及顯示進度條具體進度數據。

接着在MainActivity獲取到全部控件的實例並給全部按鈕都設置好監聽器。爲了顯示初始進度百分比,從ProgressBar三個get方法分別獲取到三個進度數值,通過相應的計算即可以獲得了。

按鈕監聽事件中,進度的重置直接用set方法,而進度的增長和減小就須要increment方法,參數爲正數即加,負數即減。這裏讓進度條每次變化十個百分比。

運行後點擊增長按鈕效果見圖,減小和重置功能也能很好的完成:

3.ProgressDialog 對話框形式進度條

學習完ProgressBar,趁熱打鐵,看看Dialog的進度條如何作到。直接在上個demo佈局最後再添加一個Button,用於打開一個ProgressDialog,給它設置監聽器後,在點擊事件裏完成一個ProgressDialog的代碼見下:

用ProgressDialog的各類set方法設置了對話框頁面風格(進度條樣式、標題和圖標)、進度條屬性和一個名爲「確認」的按鈕以及對應的點擊事件,且這個對話框可經過返回鍵取消,最後必定要有 progressDialog.show() 不然以前設置都功虧一簣對話框是沒法彈出來的。另外再說明一個方法setIndeterminate(),當值爲true表示不精確顯示進度條,好比環形進度條就會一直轉圈,而值爲false表示精確顯示進度條,好比此例中水平進度條下就會顯示刻度。運行程序後結果以下:

當點擊肯定按鈕以後,確實彈出一個查當作功的Toast。

4.SeekBar 可拖動進度條

在咱們調整音量或者聽歌的時候,會有這樣的進度條上面帶有滑塊容許用戶拖動以改變當前進度的大小,這就是SeekBar。由於都是進度條,SeekBar的關鍵屬性就很少說了,這裏認識一個監聽器OnSeekBarChangeListener,用於監聽SeekBar上滑塊運行狀態。接下來經過一個小例子學習如何使用,先準備這樣一個佈局:

在MainActiviity給SeekBar註冊監聽器並具體實現三個方法,對應滑塊三個狀態,其中onProgressChanged()方法會返回當前進度progress數值使之顯示在第一個文本框。

運行結果以下,「開始拖動」一瞬間很快就進入到「正在拖動」的狀態。

5.DataPicker 日曆選擇器

當咱們在備忘錄寫每日行程或設置鬧鐘的時候必不可少須要填寫日期和時間,安卓有提供相應的選擇器,幫助咱們快速選擇日期和時間,剩下部分就來介紹這些Picker。

DataPicker日曆選擇器可選擇年月日,下圖預覽可看到就是一個很常見的日曆。

既然是選擇器,那麼確定能夠監聽到用戶選擇的內容,因此每一個選擇器當然有對應的監聽器。如今作這樣的小demo來看監聽器的做用,標題欄顯示當前日期和時間,每當用戶在DataPicker上選擇一個日期後,標題欄實時變化以顯示當前選擇的日期。

先利用系統提供的Calendar類可獲取到當前年月日時分,這裏注意Calendar計算月是從0開始。初始時標題欄顯示當前時間。

DataPicker想要註冊監聽器OnDateChangedListener,要經過它的一個方法init()並提供四個參數,前三個參數正是以前獲取的年月日,表示初始時日曆上所顯示的日期,注意月份的計算和Calendar相同,因此不須要加1,第四個參數是監聽器對象。觸發事件後會返回被用戶選擇的年月日三個參數,再顯示到標題上便可。

看看運行後效果吧!

6.DataPickerDialog 對話框形式日曆選擇器

根據不一樣的需求,還能夠經過對話框的形式選擇日期。方法是直接在代碼中new一個DataPickerDialog對象,再show() 出來就完成了。和DataPicker很是類似的,初始化DataPickerDialog的時候須要五個參數,第一個參數是上下文,而後就是監聽器OnDateSetListener對象,以後纔是年月日。

此時程序一啓動會先彈出一個對話框,用戶可直接選擇日期,肯定後就能夠看到剛剛選擇的日期顯示在標題上了。

7.TimePicker 時間選擇器

下面來看看可選擇時分的TimePicker 時間選擇器,可在鐘錶上先選擇小時的數值,再選擇分鐘的數值。

比DataPicker簡單的是,它能夠直接經過setOnTimeChangedListener()方法註冊監聽器OnTimeChangedListener,就不須要提供其餘參數了。這裏一樣地在事件觸發後讓標題顯示被選擇的時分。

運行後:

8.TimePickerDialog 對話框形式時間選擇器

最後一個TimePickerDialog,學到如今,是否是能很容易掌握了?註冊監聽器OnTimeSetListener過程以下:

運行:

好啦,本篇內容暫時告一段落,還有一篇的高級控件等你來學習哦!

相關文章
相關標籤/搜索