Skip to content

shouzhong/BaseLib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BaseLib

说明

一个ui开发框架,基于databinding,对activity,fragment,dialog,popupwindow,recyclerview做了封装,让开发更简单

使用

依赖

implementation 'com.shouzhong:BaseLib:1.0.5'

代码

首先,你需要在Application中初始化

BUtils.init(application)

在Activity中使用

// 首先创建ViewModel
class YourViewMode : BViewModel()
// 然后创建Activity
class YourActivity : BActivity<YourViewMode>(R.layout.布局id)
// 布局格式,variable一定要以vm命名,且只有这一个
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">
    <data>
        <variable
            name="vm"
            type="YourViewMode路径" />
    </data>

    <LinearLayout
        ...>
        ...
    </LinearLayout>
</layout>

在Fragment中使用

// 首先创建ViewModel
class YourViewMode : BViewModel()
// 然后创建Fragment
class YourFragment : BFragment<YourViewMode>(R.layout.布局id)
// 布局格式,variable一定要以vm命名,且只有这一个
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">
    <data>
        <variable
            name="vm"
            type="YourViewMode路径" />
    </data>

    <LinearLayout
        ...>
        ...
    </LinearLayout>
</layout>

在RecyclerView的中使用,关于adapter请参考MultiType

// 首先创建数据集
val dataList = DataList()
override fun init() {
    // 可以注册多个
    dataList.adapter.register(YourBean::class, YourBinder(getLifecycleOwner()))
}
// 然后在布局中
<androidx.recyclerview.widget.RecyclerView
    ...
    app:adapter="@{vm.dataList.adapter}"
/>
// 创建子项流程
// 首先创建Holder
class YourHolder(itemView: View) : BHolder<YourBean>(itemView)
// 然后创建Binder
class YourBinder(lifecycleOwner: LifecycleOwner) : BBinder<YourBean, YourHolder>(lifecycleOwner, R.layout.布局id)
// 布局格式,variable一定要以holder命名,且只有这一个
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">
    <data>
        <variable
            name="holder"
            type="YourHolder路径" />
    </data>

    <LinearLayout
        ...>
        ...
    </LinearLayout>
</layout>

在Dialog中使用

// 首先创建ViewModel
class YourViewModel : BViewModel<YourBean>()
// 然后创建Dialog
class YourDialog : BDialog<YourViewModel>(R.layout.布局id)
// 布局格式,variable一定要以vm命名,且只有这一个
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">
    <data>
        <variable
            name="vm"
            type="YourViewMode路径" />
    </data>

    <LinearLayout
        ...>
        ...
    </LinearLayout>
</layout>
// 在Activity、Fragment和RecyclerView中使用,在其ViewModel或holder中
// 开关
@DialogSwitch(YourDialog::class)
val yourDialogSwitch = MutableLiveData<Boolean>()
// 数据,非必须,根据实际情况
@DialogData(YourDialog::class)
val yourDialogData = YourDialogBean()
// 是否点击屏幕外或者返回键可关闭,非必须,默认true
@DialogCancelable(YourDialog::class)
val yourDialogCancelable = MutableLiveData<Boolean>()
// 如果你想在其他地方使用,请在其中调用initDialog

在PopupWindow中使用

// 首先创建数据
class YourBean : BPopupBean()
// 然后创建ViewModel
class YourViewModel : BViewModel<YourBean>()
// 再创建PopupWindow
class YourPopup : BPopup<YourViewModel>(R.layout.布局id)
// 布局格式,variable一定要以vm命名,且只有这一个
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">
    <data>
        <variable
            name="vm"
            type="YourViewMode路径" />
    </data>

    <LinearLayout
        ...>
        ...
    </LinearLayout>
</layout>
// 在Activity、Fragment和RecyclerView中使用,在其ViewModel或holder中
// 开关
@PopupSwitch(YourPopup::class)
val yourPopupSwitch = MutableLiveData<Boolean>()
// 数据
@PopupData(YourPopup::class)
val yourPopupData = YourPopupBean()
// 是否点击屏幕外或者返回键可关闭,非必须,默认true
@PopupCancelable(YourPopup::class)
val yourPopupCancelable = MutableLiveData<Boolean>()
// 如果你想在其他地方使用,请在其中调用initPopup

其他

// startActivity或startActivityForResult
Intent.startActivity
// permission
String.permissionRequest
Array<String>.permissionRequest
ArrayList<String>.permissionRequest
// 获取资源
Int.resToXxx
// 黑白化
View.gray
// 调用三方应用打开文件(包括常用的安装apk包)
File.openByOtherApp
// 获取MIME类型
String.toMimeType
// toast
toastShort
toastLong
// 在主线程运行
runOnUiThread
// 等等

看到这,你可能不是很明白,请参考demo源码

求star

Bridge,跨进程管理库,本项目已集成

ScreenHelper,屏幕适配库

Scanner,扫描识别库

About

kotlin编写的ui开发基础包

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published