學習筆記|AS入門(二) 簡單控件篇(下)

本文將介紹的簡單控件與上篇最大的不一樣就是引入了各類各樣的監聽器,用於捕捉用戶動做並作出特定的響應,相信你們學java時候對它有了必定的認識,接下來以Button爲例,總結三種監聽器實現方法,而後會分別介紹其他簡單控件的做用和所需監聽器的類型。

6.Botton :按鈕java

按鈕無處不在,它是和用戶進行交互的一個經常使用控件。以下圖這樣的一個Button:android

爲了實現點擊登陸按鈕後登陸的操做,就須要用監聽器捕捉點擊的動做並做出反應,由於此處涉及到跳轉頁面等知識,暫且先用Log日誌進行調試,使用Log日誌的方法是Log.i(),含有的兩個參數都是string類型,前者表示標籤名稱,便於快速定位,後者表示調試信息。app

Button的監聽器是OnClickListener,如何註冊點擊事件呢?首先在Mainactivity中對聲明一個Button對象並綁定數據,而後用setOnClickListener方法給它安上監聽器,這裏須要一個OnClickListener對象的參數,實現方式有如下三種方法:佈局

(1)匿名內部類post

在括號內部new一個匿名監聽器對象,而後直接重寫方法onClick。這時運行app並點擊登陸按鈕,從Log日誌可見onClick事件被觸發了:this

查看Log日誌方法見技能篇3d

(2)獨立類調試

和匿名類相對的,在外部初始化一個有名字的監聽器對象。日誌

(3)監聽接口方式cdn

繼承監聽接口要在MainActivity類內重寫方法onClick,此時用this就能夠實現監聽器的做用。

7.ImageButton :圖片按鈕

ImageButton是顯示圖片的按鈕,它和Button的區別是:Button能夠顯示文本信息,有android:text屬性但沒有android:src屬性,它也能夠沒有任何文本信息就是一個按鈕;ImageButton正好相反,沒有android:text屬性但有android:src屬性,若是不設置scr屬性ImageButton的高度會不肯定。固然二者都有android:background屬性,Button想顯示圖片,ImageButton想有高度,也能夠經過它實現,但圖片變形與否就要看控件大小了。下圖展現了兩個Button的效果:

ImageButton的監聽器也是OnClickListener,具體見Button,此處再也不贅述。

在環境篇介紹過drawable和mipmap系列文件夾都存放圖片資源,在src和backgroud可通 過 @drawable/@mipmap/ 顯示系統提供的圖片,也能夠將系統外的圖片拖進上述文件夾裏,這和用@string/顯示文本的功能是一致的。觀察上面的兩個按鈕,它們默認底色是灰色,被點擊以後有輕微的效果,如今要把Button改爲底色爲橘色點擊後閃現紅色的按鈕,下面經過改變按鈕的樣式的這個小例子介紹如何用drawable實現自定義圖像。

step1:在drawable文件夾下新建xml文件,shape標籤。

由於本例須要給按鈕兩個背景顏色,而shape是就是用於定義形狀的。過程講解見下圖:

上圖展現了在shape裏經常使用的四個屬性,這裏給Button自定義前兩個屬性就能夠。

step2.在drawable文件夾下新建xml文件,selector標籤。

光有兩個圖形還不夠,咱們須要selector將二者聯繫在一塊兒。過程講解見下圖:

step3.設置Button的background屬性。

總的來講,android自定義控件樣式在drawable文件夾下的XML文件中,而後經過設置控件的background屬性達到效果。

8.ToggleButton :多狀態按鈕

ToggleButton是開關按鈕,它有兩種狀態:選中和未選擇狀態。好比使用手機的手電筒,有開和關兩種狀態,分別對應不一樣的圖標。ToggleButton有幾個經常使用的屬性:android:checked(當前按鈕的狀態,true表示當前處於選中狀態,false表示未選中也是默認狀態)、 android:textOn (當被選中時按鈕上的文本內容)、android:textOff(當未被選中時按鈕上的文本內容)。如今下圖這個佈局就很容易理解了(我事先在drawable下放入了兩張圖標):

那麼如何讓圖標和按鈕同時變化呢?就須要ToggleButton的監聽器OnCheckedChangeListener了。當選中ToggleButton時,觸發onCheckedChanged事件並會返回一個布爾類型的參數ischecked,利用ischecked能夠改變ToggleButton的選中狀態從而改變ToggleButton顯示的文本內容,還能夠改變ImageView顯示的背景圖標。

9.CheckBox :複選框

CheckBox是個選框,有兩種狀態:選中和未選擇狀態,「復」說明它能夠在這兩個狀態反覆切換。CheckBox經常使用屬性:android:checked(當前複選框的狀態,true表示當前處於選中狀態,false表示未選中也是默認狀態)、android:text(複選框後文本內容)。CheckBox的監聽器也是OnCheckedChangeListener。下面咱們用CheckBox實現一道可多選的選擇題:

用Log日誌進行調試代碼以下,咱們但願在日誌文件顯示出被選中的CheckBox上的文本內容,先用getText()方法拿到複選框上的文本信息再經過toString()方法轉換成string類型,就能實現了。

調試結果:

10.RadioButton :單選按鈕

RadioButton也有選中和未選中的兩個狀態,但它和複選框CheckBox的區別是它選中後再點擊不能改變狀態,這有什麼用處呢?其實RadioButton經常構成一個集合以RadioGroup的形式爲咱們所用,好比一道多選一的選擇題,每組RadioGroup裏只能有一個RadioButton被選中,若是想改變此時被選中的RadioButton的狀態,只能經過選中其餘RadioButton來實現。RadioGroup有個經常使用的屬性:android:orientation(表示包含的RadioButton的排列方式,horizontal表示水平排列,vertical表示垂直排列)。

RadioGroup的監聽器也是OnCheckedChangeListener,它們都和選中改變狀態有關。關於OnCheckedChangeListener監聽器也介紹了許多,相信你們必定能理解下圖的代碼含義了!

關於簡單控件就介紹到這裏,後續還會介紹一些稍微高級的控件,謝謝你們的觀看~

>下一篇預告:佈局篇

相關文章
相關標籤/搜索