【Android】组件化打造第三方知乎日报系列(二)——主界面框架搭建


本节完整代码可以前往github查看,项目地址:https://github.com/N0tExpectErr0r/Zhihu-Daily

AppModule

AppModule是我们的壳工程,我们通过这个壳工程来将各个组件层的Module集合到一起。

在AppModule中我们只有一个空的Activity—LauncherActivity,这个Activity用于管理我们启动应用后的跳转。

HomeModule

整体设计

HomeModule中展示了我们的主界面,是我们的第一个组件层的Module,我们的主界面决定采用底部栏TabLayout配合ViewPager的形式来实现。这里TabLayout使用了第三方库FlycoTabLayout

build.gradle

由于这里是第一个组件层的Module,所以先给大家展示一下它的build.gradle,其他组件层的gradle大同小异,以后就不再赘述。

其中我们需要关注的有几点。

注释1处,根据是否是集成编译运用了不同的apply语句,使得该模块在非集成编译的时候以application的形式存在,可以单独编译。而在集成编译时则以library的形式存在,可以被AppModule所引用。

注释2处,如果是单独编译,则使用自己的Manifest。如果是集成编译,则使用App壳工程的Manifest。

注释3处,就像第一篇中说到的,BaseModule被我们的各个组件层的Module所引用。

界面布局

布局如下所示,一个Toolbar,一个ViewPager及一个TabLayout。

Java实现

下面是具体的Java代码,可以看到这里比较特别的是,我们使用了@Route注解。这就是我们之前用到ARouter的原因了,这样其他Activity就可以通过我们HomeMainActivity的path来跳转到这个Activity。

然后我们看到getFragmentList方法,在我们后面需要Fragment加入主界面时只用改动这里即可。

然后,我们需要在LauncherActivity中通过ARouter跳转到此Activity。

同时,我们还需要在集成编译模式下让AppModule引用此Module