2018-04-04—碎片講解1

我們上次剛講了TabHost的使用,他是可以實(shí)現(xiàn)多個(gè)界面切換的,然而他現(xiàn)在已經(jīng)用的很少了,被淘汰掉了。所以今天我們給大家介紹的知識——碎片,同樣可以做到多個(gè)界面顯示和切換。



可能這樣看的還不是很明顯,那我們再來看一下他的布局切換效果。


碎片實(shí)現(xiàn)布局切換效果

好了,現(xiàn)在我們來看一下他是怎么實(shí)現(xiàn)的。



一、靜態(tài)實(shí)現(xiàn)

1.首先先創(chuàng)建兩個(gè)java文件,名字我起為FragOne,和FragTwo。都讓他們繼承Fragment(注意Fragment有兩個(gè)包,一個(gè)是v4的,是為了兼容低版本。還有一個(gè)是app的包。如果不需要兼容低版本就 用這個(gè)。一般情況我們都用v4的比較好)。

2.在代碼中重寫onCreateView方法。(這是Fragment的生命周期中的其中一個(gè)方法,生命周期方法可比activity多多了,這個(gè)我們以后再講。)

這兩行代碼相信大家都能看懂:我們創(chuàng)建一個(gè)View來獲取我們 的布局文件。第二個(gè)參數(shù)暫時(shí)先寫null。然后返回view引用。

3.創(chuàng)建.xml布局文件,名字我分別起為frag_one和frag_two,然后在里面添加最簡單的TextView,然后給他們寫上不同的背景顏色。

frag_two也是同樣。

4.在activity.xml中創(chuàng)建一個(gè)Fragment標(biāo)簽。

我們在里面寫兩個(gè)很重要的屬性:


name屬性是指定給我們的fragment標(biāo)簽指定碎片,就是我們想要顯示的碎片。

tools:layout屬性是我們立刻讓屬性里面的布局立馬顯示到我們的主布局中這個(gè)fragment中。

下面的fragment同樣這樣寫。

好了現(xiàn)在我們可以看一下,我么做出來的效果應(yīng)該是這樣的:


靜態(tài)效果顯示

這就是我們靜態(tài)實(shí)現(xiàn)的方法,我們可以再主布局中放置多個(gè)碎片來顯示多個(gè)布局(雖然個(gè)人感覺作用不大,因?yàn)橹苯釉谥鞑季种刑砑硬季忠部梢宰龅?。=)。

接下來我們來看一下動態(tài)實(shí)現(xiàn)效果(重點(diǎn))


二、動態(tài)實(shí)現(xiàn)

1.由于上面已經(jīng)創(chuàng)建過兩個(gè)碎片和相對應(yīng)的布局了,我這里就不創(chuàng)建了。

2.我們在activity.xml中添加一個(gè)FrameLayout的標(biāo)簽,給予id,我起名為mframe(你們隨意)。

3.添加兩個(gè)按鍵,用于切換布局。(這個(gè)步驟只是為了進(jìn)行切換操作,不是只有Button可以這樣,只要是事件觸發(fā)后需要切換都可以)


3.我們在activity.java代碼中創(chuàng)建這兩個(gè)按鈕,然后實(shí)現(xiàn)點(diǎn)擊事件。(都會,就不重復(fù)了吧)

4.我們在點(diǎn)擊事件中進(jìn)行如下操作:


onClick中的點(diǎn)擊第一個(gè)按鈕的執(zhí)行邏輯

第一行我們創(chuàng)建了一個(gè)碎片管理者,并且通過getSupportFragmentManager方法接收實(shí)例。

第二行我們開啟了一個(gè)事務(wù),我們下面的曹組都在這個(gè)事務(wù)中。

第三行我們調(diào)用了事務(wù)的replace方法,第一個(gè)參數(shù)是我們主布局中的FrameLayout的id。第二個(gè)參數(shù)是我們新要顯示的fragment,第三個(gè)參數(shù)是一個(gè)標(biāo)簽。

第四行我們把事務(wù)關(guān)閉,這行代碼執(zhí)行過后,我們就不能進(jìn)行操作了。

第二個(gè)按鈕的邏輯同樣是這樣,只是把新要顯示的布局變成fragThree。

現(xiàn)在我們看一下效果:


其實(shí)動態(tài)的顯示不只是通過replace方法,


我們還有add方法,但是要注意了,我們是要在一個(gè)幀布局下進(jìn)行添加,add只是顯示,但是之前顯示的還在,而hide方法就是讓我們把哪個(gè)fragment隱藏起來,如果我們不寫hide方法,我們把frag_one和frag_two的背景顏色去掉,看看會發(fā)生什么:


他會一直疊上去,所以一定要記得加上hide方法。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容