(一)安卓框架搭建之項目分層、主題、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的使用
    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源碼地址

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容