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

本文將介紹的簡單控件與上篇最大的不同就是引入了各種各樣的監(jiān)聽器近范,用于捕捉用戶動作并做出特定的響應(yīng),相信大家學(xué)java時候?qū)λ辛艘欢ǖ恼J(rèn)識延蟹,接下來以Button為例评矩,總結(jié)三種監(jiān)聽器實(shí)現(xiàn)方法,然后會分別介紹其余簡單控件的作用和所需監(jiān)聽器的類型阱飘。

6.Botton :按鈕

按鈕無處不在斥杜,它是和用戶進(jìn)行交互的一個常用控件。如下圖這樣的一個Button:

為了實(shí)現(xiàn)點(diǎn)擊登錄按鈕后登錄的操作沥匈,就需要用監(jiān)聽器捕捉點(diǎn)擊的動作并作出反應(yīng)蔗喂,因?yàn)榇颂幧婕暗教D(zhuǎn)頁面等知識,暫且先用Log日志進(jìn)行調(diào)試高帖,使用Log日志的方法是Log.i()缰儿,含有的兩個參數(shù)都是string類型,前者表示標(biāo)簽名稱散址,便于快速定位乖阵,后者表示調(diào)試信息。

Button的監(jiān)聽器是OnClickListener预麸,如何注冊點(diǎn)擊事件呢瞪浸?首先在Mainactivity中對聲明一個Button對象并綁定數(shù)據(jù),然后用setOnClickListener方法給它安上監(jiān)聽器吏祸,這里需要一個OnClickListener對象的參數(shù)默终,實(shí)現(xiàn)方式有以下三種方法:

(1)匿名內(nèi)部類

在括號內(nèi)部new一個匿名監(jiān)聽器對象,然后直接重寫方法onClick犁罩。這時運(yùn)行app并點(diǎn)擊登錄按鈕齐蔽,從Log日志可見onClick事件被觸發(fā)了:

查看Log日志方法見技能篇

(2)獨(dú)立類

和匿名類相對的床估,在外部初始化一個有名字的監(jiān)聽器對象含滴。

(3)監(jiān)聽接口方式

繼承監(jiān)聽接口要在MainActivity類內(nèi)重寫方法onClick,此時用this就可以實(shí)現(xiàn)監(jiān)聽器的作用丐巫。

7.ImageButton :圖片按鈕

ImageButton是顯示圖片的按鈕谈况,它和Button的區(qū)別是:Button可以顯示文本信息,有android:text屬性但沒有android:src屬性递胧,它也可以沒有任何文本信息就是一個按鈕碑韵;ImageButton正好相反,沒有android:text屬性但有android:src屬性缎脾,如果不設(shè)置scr屬性ImageButton的高度會不確定祝闻。當(dāng)然兩者都有android:background屬性,Button想顯示圖片遗菠,ImageButton想有高度联喘,也可以通過它實(shí)現(xiàn)华蜒,但圖片變形與否就要看控件大小了。下圖展示了兩個Button的效果:

ImageButton的監(jiān)聽器也是OnClickListener豁遭,具體見Button叭喜,此處不再贅述。

在環(huán)境篇介紹過drawable和mipmap系列文件夾都存放圖片資源蓖谢,在src和backgroud可通過@drawable/@mipmap/顯示系統(tǒng)提供的圖片捂蕴,也可以將系統(tǒng)外的圖片拖進(jìn)上述文件夾里,這和用@string/顯示文本的功能是一致的闪幽。觀察上面的兩個按鈕启绰,它們默認(rèn)底色是灰色,被點(diǎn)擊之后有輕微的效果沟使,現(xiàn)在要把Button改成底色為橘色點(diǎn)擊后閃現(xiàn)紅色的按鈕委可,下面通過改變按鈕的樣式的這個小例子介紹如何用drawable實(shí)現(xiàn)自定義圖像。

step1:在drawable文件夾下新建xml文件腊嗡,shape標(biāo)簽着倾。

因?yàn)楸纠枰o按鈕兩個背景顏色,而shape是就是用于定義形狀的燕少。過程講解見下圖:


上圖展示了在shape里常用的四個屬性卡者,這里給Button自定義前兩個屬性就可以。

step2.在drawable文件夾下新建xml文件客们,selector標(biāo)簽崇决。

光有兩個圖形還不夠,我們需要selector將兩者聯(lián)系在一起底挫。過程講解見下圖:

step3.設(shè)置Button的background屬性恒傻。

總的來說,android自定義控件樣式在drawable文件夾下的XML文件中建邓,然后通過設(shè)置控件的background屬性達(dá)到效果盈厘。

8.ToggleButton :多狀態(tài)按鈕

ToggleButton是開關(guān)按鈕,它有兩種狀態(tài):選中和未選擇狀態(tài)官边。比如使用手機(jī)的手電筒沸手,有開和關(guān)兩種狀態(tài),分別對應(yīng)不同的圖標(biāo)注簿。ToggleButton有幾個常用的屬性:android:checked(當(dāng)前按鈕的狀態(tài)契吉,true表示當(dāng)前處于選中狀態(tài),false表示未選中也是默認(rèn)狀態(tài))诡渴、 android:textOn (當(dāng)被選中時按鈕上的文本內(nèi)容)捐晶、android:textOff(當(dāng)未被選中時按鈕上的文本內(nèi)容)。現(xiàn)在下圖這個布局就很容易理解了(我事先在drawable下放入了兩張圖標(biāo)):

那么如何讓圖標(biāo)和按鈕同時變化呢?就需要ToggleButton的監(jiān)聽器OnCheckedChangeListener了租悄。當(dāng)選中ToggleButton時,觸發(fā)onCheckedChanged事件并會返回一個布爾類型的參數(shù)ischecked恩袱,利用ischecked可以改變ToggleButton的選中狀態(tài)從而改變ToggleButton顯示的文本內(nèi)容泣棋,還可以改變ImageView顯示的背景圖標(biāo)。

9.CheckBox :復(fù)選框

CheckBox是個選框畔塔,有兩種狀態(tài):選中和未選擇狀態(tài)潭辈,“復(fù)”說明它可以在這兩個狀態(tài)反復(fù)切換。CheckBox常用屬性:android:checked(當(dāng)前復(fù)選框的狀態(tài)澈吨,true表示當(dāng)前處于選中狀態(tài)把敢,false表示未選中也是默認(rèn)狀態(tài))、android:text(復(fù)選框后文本內(nèi)容)谅辣。CheckBox的監(jiān)聽器也是OnCheckedChangeListener修赞。下面我們用CheckBox實(shí)現(xiàn)一道可多選的選擇題:

用Log日志進(jìn)行調(diào)試代碼如下,我們希望在日志文件顯示出被選中的CheckBox上的文本內(nèi)容桑阶,先用getText()方法拿到復(fù)選框上的文本信息再通過toString()方法轉(zhuǎn)換成string類型柏副,就能實(shí)現(xiàn)了。

調(diào)試結(jié)果:


10.RadioButton :單選按鈕

RadioButton也有選中和未選中的兩個狀態(tài)蚣录,但它和復(fù)選框CheckBox的區(qū)別是它選中后再點(diǎn)擊不能改變狀態(tài)割择,這有什么用處呢?其實(shí)RadioButton常常構(gòu)成一個集合以RadioGroup的形式為我們所用萎河,比如一道多選一的選擇題荔泳,每組RadioGroup里只能有一個RadioButton被選中,如果想改變此時被選中的RadioButton的狀態(tài)虐杯,只能通過選中其他RadioButton來實(shí)現(xiàn)玛歌。RadioGroup有個常用的屬性:android:orientation(表示包含的RadioButton的排列方式,horizontal表示水平排列擎椰,vertical表示垂直排列)沾鳄。

RadioGroup的監(jiān)聽器也是OnCheckedChangeListener,它們都和選中改變狀態(tài)有關(guān)确憨。關(guān)于OnCheckedChangeListener監(jiān)聽器也介紹了許多译荞,相信大家一定能理解下圖的代碼含義了!

關(guān)于簡單控件就介紹到這里休弃,后續(xù)還會介紹一些稍微高級的控件吞歼,謝謝大家的觀看~

>下一篇預(yù)告:布局篇

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市塔猾,隨后出現(xiàn)的幾起案子篙骡,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件糯俗,死亡現(xiàn)場離奇詭異尿褪,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)得湘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門杖玲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人淘正,你說我怎么就攤上這事摆马。” “怎么了鸿吆?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵囤采,是天一觀的道長。 經(jīng)常有香客問我惩淳,道長蕉毯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任思犁,我火速辦了婚禮恕刘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘抒倚。我一直安慰自己褐着,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布托呕。 她就那樣靜靜地躺著含蓉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪项郊。 梳的紋絲不亂的頭發(fā)上馅扣,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天,我揣著相機(jī)與錄音着降,去河邊找鬼差油。 笑死,一個胖子當(dāng)著我的面吹牛任洞,可吹牛的內(nèi)容都是我干的蓄喇。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼交掏,長吁一口氣:“原來是場噩夢啊……” “哼妆偏!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起盅弛,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤钱骂,失蹤者是張志新(化名)和其女友劉穎叔锐,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體见秽,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡愉烙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了解取。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片步责。...
    茶點(diǎn)故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖肮蛹,靈堂內(nèi)的尸體忽然破棺而出勺择,到底是詐尸還是另有隱情创南,我是刑警寧澤伦忠,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站稿辙,受9級特大地震影響昆码,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜邻储,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一赋咽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吨娜,春花似錦脓匿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至勾扭,卻和暖如春毡琉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背妙色。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工桅滋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人身辨。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓丐谋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親煌珊。 傳聞我的和親對象是個殘疾皇子笋鄙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容