最近写了3个库,实际上是4个,但是其中一个耦合性比较高,完成度低,不适合开放给大家使用。这4个库如下,其中Starter库不建议使用。
Starter
本项目中共有4个库.
Starter
这是一个用于项目快速启动的库, 包含 BaseActivity, BaseFragment 以及一些工具类。
implementation 'com.github.boybeak:starter:0.0.6'
Permission
这是一个动态权限的辅助库。能够快速的获取权限,而不用层层检查每次都重写权限结果回调方法。
implementation 'com.github.boybeak:permission:1.0.0'
PH.ask(Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO).go(this, object : Callback {
override fun onGranted(permissions: MutableList<String>) {
//TODO do what you want
}
override fun onDenied(permission: String) {
//TODO do what you want
}
})
PH 是 Permission Helper的简写.
Picker
获取图片视频的辅助类。
implementation 'com.github.boybeak:picker:1.0.2'
// Get multiple images from gallery
Picker.gallery().image().multiple(true)
.go(this@PickerActivity, object : MultipleCallback {
override fun onGet(id: String, uris: MutableList<Uri>, files: MutableList<File>) {
adapter!!.addAll(files, Converter<File, FileImpl> { data, _ -> FileImpl(data) }).autoNotify()
}
override fun onCancel(id: String) {
}
})
// Get one image from camera
val dir = File(externalCacheDir, "images")
if (!dir.exists()) {
dir.mkdirs()
}
val cameraTempFile = File(dir, System.currentTimeMillis().toString() + ".jpg")
val uri = FileProvider.getUriForFile(this@PickerActivity, "$packageName.provider", cameraTempFile)
Picker.camera().image().output(uri, cameraTempFile)
.go(this@PickerActivity, object : SingleCallback {
override fun onGet(id: String, uri: Uri, file: File) {
adapter!!.add(FileImpl(file)).autoNotify()
}
override fun onCancel(id: String) {
}
})
用这个库,你能够从系统相册中单选或者多选图片或者视频,可以从相机中获取单个图片或者视频,同时视频支持设置最大时长和视频质量。
SAFR
implementation 'com.github.boybeak:safr:0.0.4'
SAFR 是 startActivityForResult 的简写。只为在一个回调中处理结果,而不用重写onActivityResult。
SAFR.newInstance().extras {
//fill data here
}.byAction(Intent.ACTION_GET_CONTENT)
.startActivityForResult(this, 100, object : Callback {
override fun onResult(requestCode: Int, resultCode: Int, data: Intent?) {
}
})