Scaffold是一个脚手架项目。如果你新开始一个项目,可以从本项目开始,项目介绍传送门,仓库传送门。
本文介绍项目内的一些内置页面。
二维码识别
效果图
功能介绍
- 打开页面检测相机权限;
- 识别到亮度过暗,提示打开闪光灯;
使用方法
- 打开二维码识别界面:
ScanAc.startActivityForResult(activity或者fragment, requestCode)
- 二维码识别成功在onActivityResult中回调,intent中取值“qr_msg”:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode == Activity.RESULT_OK) {
if (requestCode == REQUEST_CODE_SCAN) {
// 识别结果
val qrMsg = data?.getStringExtra("qr_msg")
}
}
}
拍照/相册选择照片
功能介绍
- 拍照/选择相册照片;
- 设置裁剪配置,可指定输出图片宽高;
- 自动压缩图片大小;
使用方法
- 打开拍照/相册选择界面:
ChooseImgAc.startActivityForResult(activity或者fragment, requestCode, cropConfig/*裁剪配置*/)
- 结果在onActivityResult中回调,intent中取值"data":
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode == Activity.RESULT_OK) {
if (requestCode == REQUEST_CODE_CHOOSE_IMG) {
// 图片路径
val filePath = data?.getStringExtra("data")
}
}
}
权限申请
效果图
功能介绍
- 申请权限时先给出dialog提示;
- 如果用户一再拒绝授予权限,则提示用户跳转setting页面进行手动授权;
使用方法
- 调用
PermissionAc.startActivityForResult(
context或者fragment,
requestCode,
permissionArray/*需要申请的权限*/)
- 授权结果在onActivityResult中回调:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == REQ_CODE_PERMISSION) {
if (resultCode == Activity.RESULT_OK) {
// 所有权限已授予
onHavePermission()
}
}
}
用户反馈
效果图
功能介绍
- 使用的是兔小巢sdk;
使用方法
- 替换sdk key为自己的(在文件key_strings.xml中);
- 打开页面:
FeedbackAc.startActivity(activity或者fragment)
图片预览
效果图
功能介绍
- 左右滑动切换图片;
- 显示当前是第几张/一共多少张;
- 图片支持缩放;
- 图片支持本地文件和网络url;
- 支持设置默认显示第N张图片;
- 点击图片显示/隐藏标题栏;
使用方法
ImgPreviewAc.startAc(activity或者fragment, imgList/*图片列表*/, selectIndex/*默认显示第几张图片*/)
基础dialog
效果图
功能介绍
- 使用DialogFragment方式实现;
- 支持属性:
- 图标【选填】;
- 标题【必填】;
- 描述【选填】;
- 2个按钮/单个按钮;
使用方法
val dialog = ScaffoldDialog.newInstance("标题", "描述", iconId/*图标资源id*/)
dialog.setOnLeftBtnClickListener { DialogUtil.dismissDialog(dialog) }
dialog.setOnRightBtnClickListener { DialogUtil.dismissDialog(dialog) }
DialogUtil.showDialog(dialog, mActivity!!.supportFragmentManager, false)
底部菜单dialog
效果图
功能介绍
- 使用DialogFragment实现;
- 标题可选;
使用方法
val dialog = BottomMenuDialog.newInstance("标题", ArrayList<String>/*菜单list*/)
dialog.showDialog(mActivity!!.supportFragmentManager)
进度dialog
效果图
使用方法
- 显示dialog:
ProgressDialogUtil.showDialog("描述...", fragmentManager)
- 关闭dialog:
ProgressDialogUtil.dismissDialog(fragmentManager)