美文网首页
使用Kongzue全家桶组件创建项目全攻略(一、引入和沉浸式的那

使用Kongzue全家桶组件创建项目全攻略(一、引入和沉浸式的那

作者: kongzue | 来源:发表于2018-11-28 14:55 被阅读122次

[更新于 2018.12.18]

前言

本文主要介绍如何使用在Github开源的Kongzue全家桶组件快速创建新项目,以及处理响应式、权限等操作的方法。
本文中演示的步骤成品将会在最终开源至Github,有兴趣可以前往下载(https://github.com/kongzue/Example)。
本篇将讲述如何引入Kongzue全家桶组件以及沉浸式相关的那些事儿。

①引用组件

目前Kongzue全家桶能够提供的组件主要由基础框架以及额外的对话框、软件更新、网络请求上传、相册选择拍照、标题栏和底部导航栏组件组成。
首先可以根据 https://kongzue.github.io/ 提供的指导方案,或者手动前往 https://github.com/kongzue 查看最新的开源组件,并准备引用到项目中:

//对话框
implementation 'com.kongzue.dialog:dialog:2.4.2'
//基础框架
implementation 'com.kongzue.baseframework:baseframework:6.6.0'
//是否需要更新组件及模块:
implementation 'com.kongzue.kongzueupdatesdk:kongzueupdatesdk:1.4.1'
//是否需要选择图片、拍照的功能:
implementation 'com.kongzue.takephoto:takephoto:2.0.8'
//若是需要访问网络功能
implementation 'com.kongzue.baseokhttp_v3:baseokhttp_v3:3.0.4'
//若是需要底部导航栏
implementation 'com.kongzue.tabbar:tabbar:1.5.3'
//若是需要顶部标题栏+沉浸式适配方案2
implementation 'com.kongzue.titlebar:titlebar:1.2.4'
//若是需要数据库
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'

②创建项目

当前使用最新的Android Studio3.2.1创建一个新的项目


新项目.png

进入build.gradle(Module)添加上述引用,并删除不必要的引用:


implementation.png

③关于Activity的修改

回到我们默认创建的MainActivity,可以看到它默认是继承自AppCompatActivity的,此时我们有更好的选择,将他的继承改为BaseActivity(com.kongzue.baseframework.BaseActivity),按照IDE提示重写三个方法(移动光标到红线报错行,按下Alt+回车,默认第一个菜单项即是重写选项),接着可以看到onCreate方法被拉了一条线,不再推荐使用,因为在BaseActivity中我们通过注解实现界面的创建,删除onCreate方法,在MainActivity的类名上使用@Layout(R.layout.activity_main)注解进行声明,即可完成MainActivity的修改和创建:

Create BaseActivity.png

在BaseActivity中,我们将一个Activity的所有事件划分为三大块:即绑定布局、加载数据和绑定事件,这三块对应着需要重写的initViews()、initDatas(JumpParameter paramer)和setEvents()三个方法,完整的使用方法后便会有讲述。
之所以去除onCreate方法,是因为在BaseActivity中,使用@Layout(layoutId)注解的形式方便我们在开发过程中可以快速找到一个Activity的布局引用,同时使用这种方式,BaseActivity会自动加载绑定布局,并实现沉浸式适配。

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

Android 默认创建的项目是带标题栏的,但其使用和功能并没有titlebar组件来的方便容易,因此首先我们需要在res/values/styles中将AppTheme的风格由默认的“Theme.AppCompat.Light.DarkActionBar”设置为“Theme.AppCompat.Light.NoActionBar”以去掉默认界面自带的的ActionBar。


修改styles

一个界面一般所具备的元素有,标题栏、内容以及底栏Tabbar,这里我们先将activity_main的布局改为线性排布模式,并在其中添置一个标题栏、内容区以及底部导航栏。
标题栏使用titlebar组件实现,底部导航栏使用tabbar实现:


XML布局

需要注意的是由于我们使用的BaseActivity中自带了沉浸式适配方式,使用titlebar的属性statusBarTransparent会产生冲突,因此此处不启用titlebar的沉浸式代码,而使用仅设置状态栏Padding的模式,即statusBarTransparentOnlyPadding = "true"。
同时,因为BaseActivity自带的沉浸式也会使底部导航栏沉浸,因此tabbar必须开启paddingNavigationBar="true"属性,此时tabbar会自动生成一段底部高度,该高度在有底部导航栏的手机上等于底部导航栏高度。
具体属性和设置可以参考对应的组件使用说明:

顶部标题栏titlebar文档:
https://github.com/kongzue/TitleBar
底部导航栏tabbar文档:
https://github.com/kongzue/Tabbar

回到代码中,绑定布局,并设置tabbar的按钮:


设置组件

在有底部导航栏的手机上导航栏一般处于黑色背景状态,为了让界面更加和谐,我们可以在Activity上使用注解@NavigationBarBackgroundColor(a = 0)来使底部导航栏背景透明,同时可以使用注解@DarkNavigationBarTheme(true)来使底部导航栏按钮呈现深色状态。完整版的MainActivity类如下图所示:


沉浸式2
此时,主界面大体上就完成了。运行下结果瞧瞧?
运行效果

还不错,另外因为是主界面,要使标题栏的返回按钮隐藏,可以使用noBackButton="true"来隐藏,具体可以参考titlebar的文档。

关于沉浸式的二谈

首先,BaseActivity默认就会开启沉浸式适配,这将导致你的布局被系统屏幕顶部的状态栏和底部的导航栏所遮盖,这时如何保证内容不背这些“安全区外”的区域所遮挡,则需要以下手段:

一,在我以往的文章中有介绍安卓“安全区”设立的方式,通过

android:fitsSystemWindows="true"

这句代码设立安全区的方式来进行内容安全区的设立,被标记了fitsSystemWindows的布局系统默认会给它设置一个PaddingTop和PaddingBottom来将其中的内容压制到合理的范围内(即排除掉顶部状态栏和底部导航栏的允许App自行使用的区域)那么这么搞我们如果需要设置背景图啊之类的可能就没办法“沉浸”到状态栏下了。此时可以尝试第二种方案:

二,使用组件解决这些毛病
在Kongzue全家桶组件中有顶部TitleBar和底部TabBar两个组件,他们分别带有statusBarTransparentOnlyPadding和paddingNavigationBar方法,开启这些方法他们会自动生成一段padding来将内容顶到安全区内,但又保留背景的空间,这样就可以实现一体式的沉浸了,但他们的使用场景有限,如果我们不想或不能使用这些组件时,可以自行进行相应的沉浸式开发:

三,自行沉浸式
首先把需要“沉浸”到状态栏、导航栏背景的布局(例如一个设置有背景图的ImageView)放在最底下的布局,让他们本身就处于沉浸式的范围内,然后建立安全区布局,将内容放在安全区布局内即可。在需要实现既是内容也需要沉浸的布局,手动设置其setPadding(...)方法,根据需要填充其top、bottom值为BaseActivity提供的getStatusBarHeight()或getNavbarHeight()即可。


咕咕咕咕咕咕...

好吧,这是个系列文章,第一篇主要是沉浸式相关的设置方式,先讲到这里,后续的坑还有玩转Kongzue对话框组件以及高效开发篇,有生之年一定写完,敬请期待!
另外喜欢本系列文章请点一下下边的喜欢,你的支持是我前进的动力!

已发布的目录:

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

二、跳转,权限,我闭着眼~(上)

二、跳转,权限,我闭着眼~(下)

相关文章

网友评论

      本文标题:使用Kongzue全家桶组件创建项目全攻略(一、引入和沉浸式的那

      本文链接:https://www.haomeiwen.com/subject/dgvaqqtx.html