VipBase

Project Url: AbnerMing888/VipBase
Introduction: Android 极简模式 MVVM,基类简易抽取封装,让代码模式趋于统一。
More: Author   ReportBugs   
Tags:

VipBase 是一个 Android 端基类融合库,目前抽取了 Activity,Fragment,PagerAdapter 等相关的父类,也提供了和父类相关的,沉浸式状态栏,统一的标题栏,事件消息分发总线等功能,无第三方依赖,都是 Android 原生的代码封装,请放心使用。

有了这个基类库,可以大大缩短的您的业务开发时间,可以统一所有的页面代码书写方式,让架构模式简单化,让业务代码清晰化,和目前主流的 MVVM 架构模式,完美契合,您只关心业务开发,其他的交给 VipBase。

VipBase 有哪些功能

  • [x] MVVM 架构模式开发,Activity 和 Fragment 简单继承即可实现。
  • [x] ViewModel 基类抽取,状态封装,LiveData 简单使用。
  • [x] 可选择性使用 Repository。
  • [x] DataBiding 使用,告别 findViewById。
  • [x] Xml 和 ViewModel 绑定。
  • [x] 标题栏全局初始化,动态更改属性,比如高度,颜色,文字和图标等。
  • [x] 支持透明状态栏,沉浸式简单实现,状态栏颜色动态配置。
  • [x] 支持 BaseFragmentPagerAdapter 使用,结合 ViewPage 简单实现 Tab 指示器效果。
  • [x] 支持消息总线,事件的分发和事件的接收轻松实现。

MVVM 架构图

VipBase 快速使用

1、在你的根项目下的 build.gradle 文件下,引入 maven。

allprojects {
    repositories {
        maven { url "https://gitee.com/AbnerAndroid/almighty/raw/master" }
    }
}

2、在你需要使用的 Module 中 build.gradle 文件下,引入依赖。当前版本号:1.0.4

dependencies {
    implementation 'com.vip:base:1.0.4'
}

VipBase 功能使用

大家可以看源码中的 app 模块,里面有每个功能使用的详细介绍,或者直接点击下面对应的查看。

Application 中初始化

每个项目的不同,页面和顶部状态栏也是不一样的,在基础库中父类库中给出了一个全局初始化的方法,大家可以根据自己项目的实际主题进行全局初始化,初始化尽量提前,可在 Application 里 onCreate 方法里进行。


class App : Application() {
    override fun onCreate() {
        super.onCreate()
        BaseConfig.apply {
            actionBarBg = R.color.base_color_272F3E
            titleColor = R.color.base_color_ffffff
            statusBarColor = R.color.base_color_272F3E
            statusBarDarkMode = false
        }
    }
}

初始化相关属性介绍(根据实际需要,选择性使用)

参数 类型 说明
statusBarColor int 状态栏背景颜色
statusBarDarkMode boolean 状态栏文字颜色
actionBarHeight int ActionBar(标题栏)的高度
actionBarBg int ActionBar(标题栏)的背景颜色
titleColor int ActionBar (标题栏)中间 title 的颜色
titleSize float ActionBar(标题栏)中间 title 的大小
leftIcon int ActionBar(标题栏)左侧的图标,一般是返回图片
leftIconWidth int ActionBar(标题栏)左边图片的宽度
leftIconHeight int ActionBar(标题栏)左边图片的高度
leftIconMarginLeft int ActionBar(标题栏)左边图片距离左边的距离
rightIconMarginRight int ActionBar(标题栏)右边图片距离右边的距离

除以上的属性之外,BaseConfig 还提供了几个方法

全局上下文设置

设置
class App : Application() {
    override fun onCreate() {
        super.onCreate()
        BaseConfig.apply {
            //…… 其他属性
            setBaseContext(this@App)//设置全局上下文
        }
    }
}
使用

哪里有用到全局上下文的地方,就可以如下进行调用。


BaseConfig.getBaseContext()

全局基类生命周期监听

为什么要进行基类 BaseActivity 的生命周期监听,主要因为是,本库是要打包给到他人使用,在一些场景下需要在基类里 进行初始化一些东西,比如埋点,Activity 的栈管理,比如三方的一些 SDK 等需求,基于此,特意提供了这个方法,可以选择性使用。

如果你是直接使用的源码,那么在遇到上述的问题,直接在基类中写即可,就没必要在用这个方法了。

设置
class App : Application() {
    override fun onCreate() {
        super.onCreate()
        BaseConfig.apply {
            //…… 其他属性
            addActivityListener(ActivityListener())//全局监听基类 Activity 的生命周期
        }
    }
}
使用

需要创建一个类,实现接口 BaseActivityListener 即可


/**
 *AUTHOR:AbnerMing
 *DATE:2023/7/15
 *INTRODUCE:基类 BaseActivity 生命周期监听,可以在这里处理一些业务
 */
class ActivityListener : BaseActivityListener {

    override fun onCreate(savedInstanceState: Bundle?, context: Context) {

    }

    override fun onStart() {
    }

    override fun onRestart() {
    }

    override fun onResume() {
    }

    override fun onPause() {
    }

    override fun onStop() {
    }

    override fun onDestroy() {
    }
}

单个功能详细介绍

相关功能 概述 点击查看使用方式
BaseActivity 逻辑比较简单的 Activity 可以继承此类 查看
BaseVMActivity 使用 ViewModel 的 Activity 可以继承此类 查看
BaseFragment 逻辑比较简单的 Fragment 可以继承此类 查看
BaseVMFragment 使用 ViewModel 的 Fragment 可以继承此类 查看
BaseViewModel ViewModel 继承此类 查看
FragmentPagerAdapter PagerAdapter 父类结合 TabLayout 和 ViewPager 使用 查看
StatusBar 状态栏工具类,可以实现沉浸式,透明等 查看
ActionBarView 自定义的标题栏 查看
LiveDataBus 事件消息总线 查看

VipBase 相关功能 Demo 效果图

欢迎关注作者

微信搜索【App 开发干货铺】,或扫描下面二维码关注,查阅更多技术文章!

赞赏作者

看在作者这么努力的份上,赞赏随意,给个鼓励好不好~

License

Copyright (C) AbnerMing, VipBase Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Apps
About Me
GitHub: Trinea
Facebook: Dev Tools