使用Kongzue全家桶組件創(chuàng)建項(xiàng)目全攻略(一定硝、引入和沉浸式的那些事兒)

[更新于 2018.12.18]

前言

本文主要介紹如何使用在Github開源的Kongzue全家桶組件快速創(chuàng)建新項(xiàng)目皿桑,以及處理響應(yīng)式、權(quán)限等操作的方法蔬啡。
本文中演示的步驟成品將會在最終開源至Github诲侮,有興趣可以前往下載(https://github.com/kongzue/Example)。
本篇將講述如何引入Kongzue全家桶組件以及沉浸式相關(guān)的那些事兒箱蟆。

①引用組件

目前Kongzue全家桶能夠提供的組件主要由基礎(chǔ)框架以及額外的對話框沟绪、軟件更新、網(wǎng)絡(luò)請求上傳空猜、相冊選擇拍照绽慈、標(biāo)題欄和底部導(dǎo)航欄組件組成恨旱。
首先可以根據(jù) https://kongzue.github.io/ 提供的指導(dǎo)方案,或者手動前往 https://github.com/kongzue 查看最新的開源組件坝疼,并準(zhǔn)備引用到項(xiàng)目中:

//對話框
implementation 'com.kongzue.dialog:dialog:2.4.2'
//基礎(chǔ)框架
implementation 'com.kongzue.baseframework:baseframework:6.6.0'
//是否需要更新組件及模塊:
implementation 'com.kongzue.kongzueupdatesdk:kongzueupdatesdk:1.4.1'
//是否需要選擇圖片搜贤、拍照的功能:
implementation 'com.kongzue.takephoto:takephoto:2.0.8'
//若是需要訪問網(wǎng)絡(luò)功能
implementation 'com.kongzue.baseokhttp_v3:baseokhttp_v3:3.0.4'
//若是需要底部導(dǎo)航欄
implementation 'com.kongzue.tabbar:tabbar:1.5.3'
//若是需要頂部標(biāo)題欄+沉浸式適配方案2
implementation 'com.kongzue.titlebar:titlebar:1.2.4'
//若是需要數(shù)據(jù)庫
implementation 'com.kongzue.kongzuedb:kongzuedb:1.0.1'
//下拉刷新上拉加載
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-14'
//輪播圖框架
implementation 'com.youth.banner:banner:1.4.10'
//Fresco圖片框架
implementation 'com.facebook.fresco:fresco:0.12.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'

②創(chuàng)建項(xiàng)目

當(dāng)前使用最新的Android Studio3.2.1創(chuàng)建一個新的項(xiàng)目


新項(xiàng)目.png

進(jìn)入build.gradle(Module)添加上述引用,并刪除不必要的引用:


implementation.png

③關(guān)于Activity的修改

回到我們默認(rèn)創(chuàng)建的MainActivity裙士,可以看到它默認(rèn)是繼承自AppCompatActivity的入客,此時我們有更好的選擇,將他的繼承改為BaseActivity(com.kongzue.baseframework.BaseActivity)腿椎,按照IDE提示重寫三個方法(移動光標(biāo)到紅線報(bào)錯行桌硫,按下Alt+回車,默認(rèn)第一個菜單項(xiàng)即是重寫選項(xiàng))啃炸,接著可以看到onCreate方法被拉了一條線铆隘,不再推薦使用,因?yàn)樵贐aseActivity中我們通過注解實(shí)現(xiàn)界面的創(chuàng)建南用,刪除onCreate方法膀钠,在MainActivity的類名上使用@Layout(R.layout.activity_main)注解進(jìn)行聲明,即可完成MainActivity的修改和創(chuàng)建:

Create BaseActivity.png

在BaseActivity中裹虫,我們將一個Activity的所有事件劃分為三大塊:即綁定布局肿嘲、加載數(shù)據(jù)和綁定事件,這三塊對應(yīng)著需要重寫的initViews()筑公、initDatas(JumpParameter paramer)和setEvents()三個方法雳窟,完整的使用方法后便會有講述。
之所以去除onCreate方法匣屡,是因?yàn)樵贐aseActivity中封救,使用@Layout(layoutId)注解的形式方便我們在開發(fā)過程中可以快速找到一個Activity的布局引用,同時使用這種方式捣作,BaseActivity會自動加載綁定布局誉结,并實(shí)現(xiàn)沉浸式適配。

④對于布局的修改和沉浸式

Android 默認(rèn)創(chuàng)建的項(xiàng)目是帶標(biāo)題欄的券躁,但其使用和功能并沒有titlebar組件來的方便容易惩坑,因此首先我們需要在res/values/styles中將AppTheme的風(fēng)格由默認(rèn)的“Theme.AppCompat.Light.DarkActionBar”設(shè)置為“Theme.AppCompat.Light.NoActionBar”以去掉默認(rèn)界面自帶的的ActionBar。


修改styles

一個界面一般所具備的元素有也拜,標(biāo)題欄旭贬、內(nèi)容以及底欄Tabbar,這里我們先將activity_main的布局改為線性排布模式搪泳,并在其中添置一個標(biāo)題欄、內(nèi)容區(qū)以及底部導(dǎo)航欄扼脐。
標(biāo)題欄使用titlebar組件實(shí)現(xiàn)岸军,底部導(dǎo)航欄使用tabbar實(shí)現(xiàn):


XML布局

需要注意的是由于我們使用的BaseActivity中自帶了沉浸式適配方式奋刽,使用titlebar的屬性statusBarTransparent會產(chǎn)生沖突,因此此處不啟用titlebar的沉浸式代碼艰赞,而使用僅設(shè)置狀態(tài)欄Padding的模式佣谐,即statusBarTransparentOnlyPadding = "true"。
同時方妖,因?yàn)锽aseActivity自帶的沉浸式也會使底部導(dǎo)航欄沉浸狭魂,因此tabbar必須開啟paddingNavigationBar="true"屬性,此時tabbar會自動生成一段底部高度党觅,該高度在有底部導(dǎo)航欄的手機(jī)上等于底部導(dǎo)航欄高度雌澄。
具體屬性和設(shè)置可以參考對應(yīng)的組件使用說明:

頂部標(biāo)題欄titlebar文檔:
https://github.com/kongzue/TitleBar
底部導(dǎo)航欄tabbar文檔:
https://github.com/kongzue/Tabbar

回到代碼中,綁定布局杯瞻,并設(shè)置tabbar的按鈕:


設(shè)置組件

在有底部導(dǎo)航欄的手機(jī)上導(dǎo)航欄一般處于黑色背景狀態(tài)镐牺,為了讓界面更加和諧,我們可以在Activity上使用注解@NavigationBarBackgroundColor(a = 0)來使底部導(dǎo)航欄背景透明魁莉,同時可以使用注解@DarkNavigationBarTheme(true)來使底部導(dǎo)航欄按鈕呈現(xiàn)深色狀態(tài)睬涧。完整版的MainActivity類如下圖所示:


沉浸式2

此時,主界面大體上就完成了旗唁。運(yùn)行下結(jié)果瞧瞧畦浓?
運(yùn)行效果

還不錯,另外因?yàn)槭侵鹘缑婕煲撸箻?biāo)題欄的返回按鈕隱藏讶请,可以使用noBackButton="true"來隱藏,具體可以參考titlebar的文檔电谣。

關(guān)于沉浸式的二談

首先秽梅,BaseActivity默認(rèn)就會開啟沉浸式適配,這將導(dǎo)致你的布局被系統(tǒng)屏幕頂部的狀態(tài)欄和底部的導(dǎo)航欄所遮蓋剿牺,這時如何保證內(nèi)容不背這些“安全區(qū)外”的區(qū)域所遮擋企垦,則需要以下手段:

一,在我以往的文章中有介紹安卓“安全區(qū)”設(shè)立的方式晒来,通過

android:fitsSystemWindows="true"

這句代碼設(shè)立安全區(qū)的方式來進(jìn)行內(nèi)容安全區(qū)的設(shè)立钞诡,被標(biāo)記了fitsSystemWindows的布局系統(tǒng)默認(rèn)會給它設(shè)置一個PaddingTop和PaddingBottom來將其中的內(nèi)容壓制到合理的范圍內(nèi)(即排除掉頂部狀態(tài)欄和底部導(dǎo)航欄的允許App自行使用的區(qū)域)那么這么搞我們?nèi)绻枰O(shè)置背景圖啊之類的可能就沒辦法“沉浸”到狀態(tài)欄下了。此時可以嘗試第二種方案:

二湃崩,使用組件解決這些毛病
在Kongzue全家桶組件中有頂部TitleBar和底部TabBar兩個組件荧降,他們分別帶有statusBarTransparentOnlyPadding和paddingNavigationBar方法,開啟這些方法他們會自動生成一段padding來將內(nèi)容頂?shù)桨踩珔^(qū)內(nèi)攒读,但又保留背景的空間朵诫,這樣就可以實(shí)現(xiàn)一體式的沉浸了,但他們的使用場景有限薄扁,如果我們不想或不能使用這些組件時剪返,可以自行進(jìn)行相應(yīng)的沉浸式開發(fā):

三废累,自行沉浸式
首先把需要“沉浸”到狀態(tài)欄、導(dǎo)航欄背景的布局(例如一個設(shè)置有背景圖的ImageView)放在最底下的布局脱盲,讓他們本身就處于沉浸式的范圍內(nèi)邑滨,然后建立安全區(qū)布局,將內(nèi)容放在安全區(qū)布局內(nèi)即可钱反。在需要實(shí)現(xiàn)既是內(nèi)容也需要沉浸的布局掖看,手動設(shè)置其setPadding(...)方法,根據(jù)需要填充其top面哥、bottom值為BaseActivity提供的getStatusBarHeight()或getNavbarHeight()即可哎壳。


咕咕咕咕咕咕...

好吧,這是個系列文章幢竹,第一篇主要是沉浸式相關(guān)的設(shè)置方式耳峦,先講到這里,后續(xù)的坑還有玩轉(zhuǎn)Kongzue對話框組件以及高效開發(fā)篇焕毫,有生之年一定寫完蹲坷,敬請期待!
另外喜歡本系列文章請點(diǎn)一下下邊的喜歡邑飒,你的支持是我前進(jìn)的動力循签!

已發(fā)布的目錄:

一、引入和沉浸式的那些事兒

二疙咸、跳轉(zhuǎn)县匠,權(quán)限,我閉著眼~(上)

二撒轮、跳轉(zhuǎn)乞旦,權(quán)限,我閉著眼~(下)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末题山,一起剝皮案震驚了整個濱河市兰粉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌顶瞳,老刑警劉巖玖姑,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異慨菱,居然都是意外死亡焰络,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門符喝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來闪彼,“玉大人,你說我怎么就攤上這事协饲”蛤荆” “怎么了课蔬?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長郊尝。 經(jīng)常有香客問我,道長战惊,這世上最難降的妖魔是什么流昏? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮吞获,結(jié)果婚禮上况凉,老公的妹妹穿的比我還像新娘。我一直安慰自己各拷,他們只是感情好刁绒,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著烤黍,像睡著了一般知市。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上速蕊,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天嫂丙,我揣著相機(jī)與錄音,去河邊找鬼规哲。 笑死跟啤,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的唉锌。 我是一名探鬼主播隅肥,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼袄简!你這毒婦竟也來了腥放?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤痘番,失蹤者是張志新(化名)和其女友劉穎捉片,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體汞舱,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡伍纫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了昂芜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片莹规。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖泌神,靈堂內(nèi)的尸體忽然破棺而出良漱,到底是詐尸還是另有隱情舞虱,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布母市,位于F島的核電站矾兜,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏患久。R本人自食惡果不足惜椅寺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蒋失。 院中可真熱鬧返帕,春花似錦、人聲如沸篙挽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铣卡。三九已至链韭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間算行,已是汗流浹背梧油。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留州邢,地道東北人儡陨。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像量淌,于是被迫代替她去往敵國和親骗村。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

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

  • 用兩張圖告訴你呀枢,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料胚股? 從這篇文章中你...
    hw1212閱讀 12,712評論 2 59
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,070評論 25 707
  • 初來乍到 請多指教 沒事笑笑 開心就好
    y凡凡不煩閱讀 194評論 0 0
  • 今日雨琅拌,小雨一直淅瀝淅瀝的下個不停,一整天都沒太陽摘刑,車間里并不算忙进宝。 下午來了一個急單,客戶要來拿貨枷恕,我們倆個人分...
    A把時間當(dāng)做朋友閱讀 179評論 0 3
  • 內(nèi)地行------3.濟(jì)南 5月26日晚2點(diǎn)到濟(jì)南機(jī)場党晋,下飛機(jī)坐出租車到少年宮附近的熙遙賓館,只剩一間房很晚了只能...
    寒香js閱讀 266評論 0 1