云炬Android开发笔记 4单Activity界面架构设计与验证
1、4-2本應(yīng)用沒(méi)有使用多個(gè)activity進(jìn)行界面的展示,而是通過(guò)一個(gè)activity管理多個(gè)fragment來(lái)進(jìn)行處理。
fragment里面有很多坑,推薦使用開(kāi)源庫(kù)fragmentation。
2、引入fragmentation的依賴(lài)
?
3、因?yàn)檫@里的activity只是作為一個(gè)容器,所以我們叫它ProxyActivity,它繼承自SupportActivity
?
注:supportActivity默認(rèn)使用的是supportv7包中的appcompatactivity,
4、創(chuàng)建basefragment
因?yàn)椴幌M蟮氖褂谜呱踔潦俏覀冏约喝ew出它的實(shí)例,所以,這里以抽象類(lèi)來(lái)聲明它。這里會(huì)提供一個(gè)方法,讓子類(lèi)傳入它的布局,可以是view,也可以是一個(gè)layout的id,既然是這樣的話,就把它的類(lèi)型聲明為Object。這是寫(xiě)框架的一個(gè)小技巧,這也是抽象類(lèi)的一個(gè)比較靈活的方式。
?
5、butterknife是一個(gè)視圖注入的庫(kù),如果在每個(gè)fragment中使用它會(huì)有些麻煩,所以,索性在basefragment中統(tǒng)一進(jìn)行處理。這里是在library中使用它,在liabrary中使用它需要注意一些事項(xiàng)。
首先引入所需要的依賴(lài)
?
在library中使用需要額外地添加如下的東西
?
?
同時(shí),在library的module里面加上gradle的插件
?
注:butterknife的作用是生成R2這樣的類(lèi),這個(gè)類(lèi)是用來(lái)生成是否綁定我們所需要的view id,因?yàn)镽,也就是Android的資源類(lèi),只能在module為application中被使用,butterknife又偏偏需要使用這樣的id資源,那怎么辦呢?大神開(kāi)發(fā)了一個(gè)這樣的插件,通過(guò)R生成相應(yīng)的R2資源文件,那么在綁定的時(shí)候,就可以使用R2這樣的方式來(lái)綁定資源id來(lái)訪問(wèn)它。
6、通過(guò)綁定視圖后,強(qiáng)制子類(lèi)實(shí)現(xiàn)方法onBindView()
7、在onDestroy()方法中解除綁定
?
?
8、創(chuàng)建一個(gè)權(quán)限檢查的中間層
?
9、創(chuàng)建以后真正使用的delegate,也是一個(gè)抽象類(lèi),并不打算以后讓人直接使用
?
10、因?yàn)檫@個(gè)類(lèi)需要被其它類(lèi)繼承,也不能直接使用,所以也使用abstract來(lái)修飾。
一般情況下用于容納frame layout的布局都是framelayout,這里使用v7包中的ContentFrameLayout,
加載資源布局。
因?yàn)槭菃蝍ctivity,所以在退出activity的時(shí)候,整個(gè)應(yīng)用也就退出了,所以這里做一些垃圾回收的操作,當(dāng)然,這兩個(gè)方法不一定是一定執(zhí)行的。
?
調(diào)用方法
?
?
創(chuàng)建資源id的類(lèi),這樣Androidstudio會(huì)為我們關(guān)聯(lián)好,而且絕對(duì)不會(huì)重復(fù),
?
11、驗(yàn)證框架是否可用
創(chuàng)建delegate類(lèi).onBindView()是對(duì)每個(gè)控件進(jìn)行操作,這里先不做處理
?
調(diào)用方式
運(yùn)行結(jié)果:
?
也就是說(shuō)我們的整個(gè)項(xiàng)目是一個(gè)單activity的項(xiàng)目,根fragment也就是deletefragment,這樣整體機(jī)架就搭建完成了
總結(jié)
以上是生活随笔為你收集整理的云炬Android开发笔记 4单Activity界面架构设计与验证的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: LeCun自曝使用C语言23年之久,2年
- 下一篇: 每个程序员都该学习的5种开发语言,不可错