美文网首页安卓框架
(一)安卓框架搭建之项目分层、主题、gradle基本配置

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

作者: burro630 | 来源:发表于2017-09-22 22:37 被阅读166次

前言

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

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

  • 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的使用
    1. AgentWebview的使用

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

新建项目并分层

我们代码里经常会建package来分门别类的管理代码,同样,我们也需要建不同
module来管理我们的框架层,业务层等

1.新建项目

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

工程目录

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

此时settings.gradle 中内容如下

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

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

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

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

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

设置主题

主题是全局的样式属性。
打开app模块的清单文件,在application节点下有个android:theme="@style/AppTheme",点击进入AppTheme



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



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

修改AppTheme内设置如下
<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>

        <item name="android:textColorPrimary">@color/textColorPrimary</item>
        <item name="android:windowBackground">@color/windowBackground</item>
        <item name="android:textColorSecondary">@color/textColorSecondary</item>
    </style>
</resources>

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

<resources>
    <!--<color name="colorPrimary">#3F51B5</color>-->
    <color name="colorPrimary">#FF306BC5</color>
    <color name="colorPrimaryDark">#FF306BC5</color>
    <color name="colorAccent">#FF4599DF</color>
    
    <color name="windowBackground">#ffffff</color>
    <color name="textColorPrimary">#000000</color>
    <color name="textColorSecondary">#f6f6f6</color>
</resources>

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

 <item name="android:scrollbarThumbVertical">@color/red</item>

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

也不要忘了依赖工程,这里依赖关系如下
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一样

相关链接

(二)安卓框架搭建之项目Butterknife引入,Application的简单封装

github源码地址

相关文章

网友评论

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

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