android项目分层,(一)安卓框架搭建之项目分层、主题、gradle基本配置

前言

框架重要性不言而喻,一个好的框架可以大大提高后期开发的效率和质量。接下来将分七篇文章讲述安卓框架的搭建,框架中用的是当前比较主流的元素,也是相对成熟稳定的。讲述的内容参考了很多相关的资料,绝大部分也是经过一番思考和论证。文章既为分享,也为总结!

主要涉及的知识点如下(所列内容不分先后):

1.通信框架: Retrofit2+Okhttp3+Rxjava2

2.项目结构: MVP

3.图片处理: Picasso

4.View的绑定工具: Butterknife

5.MaterialDesign风格: CardView、MaterialDailog等

6.权限处理Easypermissions、android N读写文件路径

7.涉及到BaseActivity的封装,BaseFragment,MainActivity

8.错误日志保存编写

9.RecycalView和Adapter的封装

10.常用工具类的封装

11.数据库操作GreenDao的使用

AgentWebview的使用

部分代码可能因为比较简单或者比较基础并没有在文章中提及,有兴趣的同学可以到源码中查看。好了,那么我们就从新建项目开始吧!!!

新建项目并分层

我们代码里经常会建package来分门别类的管理代码,同样,我们也需要建不同

module来管理我们的框架层,业务层等

1.新建项目

项目名称为FrameworkDemo,包名为com.example.burro.demo,第一个Activity的名字命名为LoadingActivity

14727ea2f60c

工程目录

2.项目分层

在此案例中,我主要把项目分为app入口层,主体业务层(app主体业务层、data主体业务层)和项目库层(app基础框架层、data基础框架层、其他引用库)。后面讲gradle基本配置的时候,我还会对资源文件根据功能模块进行分层。分层的好处是显而易见的,层次分明、容易维护。项目的分层和项目业务是分不开的,如果你的项目只有几个页面,可能没必要分的那么细。如果你的项目页面、功能模块较多,那我建议还是分门别类,规规矩矩的来。另一个好处是,如果有新的项目要开发,那么把这套项目库层【底层框架】搬过去。只需两三个小时,完全可以进行新项目的业务开发工作。

下面新建库和文件夹:

新建名为appbiz的Library, 包名 com.example.burro.appbiz

新建名为databiz的Library,包名com.example.burro.demo.databiz

新建名为appframework的Library,包名com.example.burro.demo.appframework

新建名为dataframework的Library,包名com.example.burro.demo.dataframework

新建文件夹bizmodule

新建文件夹libmodule

14727ea2f60c

此时settings.gradle 中内容如下

include ':app', ':appbiz', ':databiz', ':appframework', ':dataframework'

把appframework和dataframework移动到libmodule文件夹下,把databiz和appbiz移动到bizmodule文件夹下,如下

14727ea2f60c

修改settings.gradle里的内容在相应的module前加上文件夹名称 如下

include ':app', 'bizmodule:appbiz', 'bizmodule:databiz', 'libmodule:appframework', 'libmodule:dataframework'

Clean后再编译项目。当libmodule、bizmodule文件夹上出现了小杯子,完成分层!

14727ea2f60c

设置主题

主题是全局的样式属性。

打开app模块的清单文件,在application节点下有个android:theme="@style/AppTheme",点击进入AppTheme

14727ea2f60c

可以看到有三个颜色值 colorPrimary,colorPrimaryDark,colorAccent,如下

14727ea2f60c

这几个主题属性颜色与页面效果关系可以用一张图来描述:

14727ea2f60c

修改AppTheme内设置如下

@color/colorPrimary

@color/colorPrimaryDark

@color/colorAccent

@color/textColorPrimary

@color/windowBackground

@color/textColorSecondary

需要把颜色改成我们APP对应的值:

#FF306BC5

#FF306BC5

#FF4599DF

#ffffff

#000000

#f6f6f6

这里补充一句,全局view的样式基本上都可以在这里统一设置。例如想要把ScrollView纵向滚动条的颜色修改为红色,可以这样设置

@color/red

【注意:因为这些属性是全局通用。我把它移动到appfamework工程对应目录下【原本没有,需要新建】

14727ea2f60c

也不要忘了依赖工程,这里依赖关系如下

dataframework>appframework>appbiz

dataframework>databiz

databiz>appbiz>app

在app工程build.gradle内的dependencies内增加

compile project(':bizmodule:appbiz')

在appbiz工程build.gradle内的dependencies内增加

compile project(':libmodule:appframework')

compile project(':bizmodule:databiz')

在databiz工程build.gradle内的dependencies内增加

compile project(':libmodule:dataframework')

在appframework工程build.gradle内的dependencies内增加

compile project(':libmodule:dataframework')

gradle基本配置

gradle的配置需要全局管理,即绝大部分依赖包或者版本号都将在项目(Project)的build.gradle内设置,各工程(Moudle)的build.gradle直接引用。不得不说gradle着实强大,由于网上有很多gradle的配置教程,讲述的也很详细,这里不再赘述。直接贴代码

项目(Project)的build.gradle:

原本内容不变,在根目录下新增如下

//外部使用的安卓版本相关

ext {

minSdkVersion = 15

targetSdkVersion = 25

compileSdkVersion = 25

buildToolsVersion = '25.0.2'

}

//文件内部使用

def supportLibraryVersion = '25.1.0'

//compile依赖的第三方库

ext.deps = [

//android

supportCompat : "com.android.support:support-compat:$supportLibraryVersion",

supportAnnotations : "com.android.support:support-annotations:$supportLibraryVersion",

supportRecyclerView : "com.android.support:recyclerview-v7:$supportLibraryVersion",

supportV4 : "com.android.support:support-v4:$supportLibraryVersion",

supportappcompatV7 : "com.android.support:appcompat-v7:$supportLibraryVersion",

]

工程(Module)的build.gradle:

以libmodule/appframework下的build.gradle为例进行设置,如原本defaultConfig内的compileSdkVersion 25 现在可以设置成compileSdkVersion rootProject.ext.compileSdkVersion

原本dependencies内的compile 'com.android.support:appcompat-v7:25.3.1'现在可以设置成compile deps.supportappcompatV7

整体下:

apply plugin: 'com.android.library'

android {

compileSdkVersion rootProject.ext.compileSdkVersion

buildToolsVersion rootProject.ext.buildToolsVersion

defaultConfig {

minSdkVersion rootProject.ext.minSdkVersion

targetSdkVersion rootProject.ext.targetSdkVersion

versionCode 1

versionName "1.0"

}

buildTypes {

release {

minifyEnabled false

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

}

}

}

dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])

testCompile 'junit:junit:4.12'

compile deps.supportappcompatV7

}

其他各个工程module也类似设置。后续会依赖很多第三方优秀库,依赖的方式和appcompat-v7一样

相关链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值