美文网首页安卓框架
(一)安卓框架搭建之项目分层、主题、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