AndroidUtilsKt
基于Kotlin语言编写的Android工具类。
Install / Use
/learn @lindroy/AndroidUtilsKtREADME
AndroidUtilsKt
暂停维护 由于本人疏忽,个别类丢失了,所以建议需要使用的朋友直接参考复制里面的代码。
使用kotlin编写的Android工具类,主要采用扩展函数的方式。目前还在不断补充中。
本说明文档遵循如下的规则:
- 根据工具类文件名的英文字母顺序排序。
- 接收类一栏为“/”的表示该方法或属性为全局成员,可在任意地方调用;接收类有具体类名(如Any、String?等)的表示采用扩展成员的写法;放在包“extension”中;
- 接收类一栏为“—”的表示采用静态类的写法,需要使用类名的形式调用里面的函数或属性,放在包“statics”中;
- 成员包含函数和属性,函数名称后面需要加“()”,属性则不用;
- “JvmName”表示该成员在Java中调用的名称;
- 常量另外写一个表格。
配置方法
1、在工程gradle中添加:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
2、添加如下依赖:
dependencies {
implementation 'com.github.lindroy:AndroidUtilsKt:latest-version'
}
latest-version参见图标jitpack后面的版本号。
3、在Application中初始化
AndUtil.init(this)
.setDefaultSpFile() //设置SharePreferences的默认表名,默认为“sp_util”
.setServerTimeFormat() //设置时间格式化中服务器时间格式,默认为“yyyy-MM-dd'T'HH:mm:ss.SSS”
.setLogGlobalConfig { //配置日志打印工具类
……
}
工具类文档
ActivityUtil:Activity工具类
| 成员名称 | 作用 | 接收类 | 备注 | | ------------ | ------------ | :------------: | ------------ | | launchActivity() | 启动一个Activity | Context | 启动的Activity作为泛型传入 |
AppManager:App管理器
| 成员名称 | 作用 | 接收类 | 备注 | | ------------ | ------------ | :------------: | :------------: | | addActivity() | Activity入栈 | — | / | | removeActivity() | Activity出栈 | — | / | | finishActivity() | 关闭一个Activity | — | / | | currentActivity() | 获取当前栈顶Activity | — | 如果栈内元素为空,则返回null | | finishAllActivity() | 清理栈中所有的Activity | — | / | | exitApp() | 退出应用程序 | — | / |
AppUtil:应用信息工具类
| 成员名称 | 作用 | 接收类 | 备注 | | ------------ | ------------ | :------------: | :------------: | | getAppVersionName() | 获取应用版本名称,默认为本应用 | Context | / | | getAppVersionCode() | 获取应用版本号,默认为本应用 | Context | / | | getAppSize() | 获取应用大小,默认为本应用 | Context | 返回值单位为b | | getAppIcon() |获取应用图标,默认为本应用| Context | 失败时返回null |
BarUtil:栏工具类
状态栏(StatusBar)
文件名为StatusBarUtil,在Java中调用时使用BarUtil即可。
| 成员名称 | 作用 | 接收类 | 备注 | | ------------ | ------------ | :------------: | :------------: | | statusBarHeight | 获取状态栏高度 | / | 单位为px | | setStatusBarColor | 设置纯颜色状态栏 | Activity | 参数为ColorInt | | setStatusBarColorRes() | 设置纯颜色状态栏 | Activity | 参数为ColorRes | | setTransParentStatusBar() | 设置透明状态栏 | Activity | 在界面创建时调用才能生效 | | setGradientStatusBar() | 设置渐变色状态栏 | Activity | 参数为Drawable或DrawableRes | | setStatusBarDarkMode() | 设置状态栏白色字体图标(深色模式) | Activity | / | | setStatusBarLightMode() | 设置状态栏黑色字体图标(浅色模式) | Activity | / |
导航栏(NavigationBar)
文件名为NavigationBarUtil,在Java中调用时使用BarUtil即可。
| 成员名称 | 作用 | 接收类 | 备注 | | ------------ | ------------ | :------------: | :------------: | | hasNavBar | 手机是否有虚拟导航栏 | / | / | | isNavBarShowed | 当前虚拟导航栏是否显示 | Activity/Window | / | | isNavBarHidden | 当前虚拟导航栏是否隐藏 | Activity/Window | / | | navBarHeight | 获取虚拟导航栏的高度 | / | 必须在布局绘制完成之后调用 | | navBarColor | 获取/设置虚拟导航栏颜色 | Activity/Window | 颜色值为ColorInt | | setNavBarColorRes() | 获取/设置导航栏颜色 | Activity/Window | 参数为资源ID |
BitmapUtil:
| 成员名称 | 作用 | 接收类 | 备注 | | ------------ | ------------ | :------------: | :------------: | | createBitmapSafely() | 获取应用版本名称,默认为本应用 | / | / | | viewToBitmap() | 将View转换为Bitmap | / | / |
BrightnessUtil:屏幕亮度工具类
设置系统屏幕亮度时需要动态申请系统设置权限:
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//如果当前平台版本大于23平台
if (!Settings.System.canWrite(mContext)) {
//未获取权限
val intent = with(Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS)) {
data = Uri.parse("package:$packageName")
this
}
startActivityForResult(intent, 100)
} else {
//已经获得了权限
}
}
| 成员名称 | 作用 | 接收类 | 备注 | | ------------ | ------------ | :------------: | :------------: | | isAutoBrightness | 是否开启了自动亮度 | / | / | | setAutoBrightness() | 设置是否开启自动亮度 | / | 设置成功返回true | | systemBrightness | 获取/设置系统屏幕宽度 | / | 亮度范围为0~255 | | windowBrightness | 获取/设置当前窗口亮度 | Activity | 亮度范围为0~1.0,1为最亮,默认为-1 |
ClipboardUtil: 剪贴板工具类
| 成员名称 | 作用 | 接收类 | 备注 | | ------------ | ------------ | ------------ | :------------: | | clipPlainText() | 复制纯文本 | / | / |
DensityUtil:像素单位转换工具类
| 成员名称 | 作用 | 接收类 | 备注 | | ------------ | ------------ | :------------: | :------------: | | dp2px() | dp转px | / | / | | px2dp() | px转dp | / | / | | sp2px() | sp转px | / | / | | px2sp() | px转sp | / | / |
IntentUtil:意图工具类
| 成员名称 | 作用 | 接收类 | 备注 | | ------------ | ------------ | :------------: | :------------: | | launchSystemSetting() | 打开系统设置界面 | — | / | | launchWifiSetting() | 打开wifi设置界面 | — | / | | launchDialPage() | 打开拨号面板 | — | / | | callPhone() | 直接拨打电话 | — | 动态权限 | | launchBrowse() | 调用浏览器并打开一个网页 | — | / | | launchCamera() | 启动系统相机 | — | 动态权限 | | sendSMS() | 发送短信 | — | 动态权限 |
KeyboardUtil:软键盘工具类
| 成员名称 | 作用 | 接收类 | 备注 | | ------------ | ------------ | :------------: | :------------: | | showKeyboard() | 打开软键盘 | View | / | | hideKeyboard() | 关闭软键盘 | View | / | | toggleKeyboard() | 根据当前软键盘的状态做取反操作 | View | / |
监听软键盘的状态
监听软键盘的显示和隐藏可以使用KeyboardStatusWatcher类,使用方法见下面代码。但要注意:软键盘的状态和高度必须在设置了监听事件之后才能获取,且
val keyboardStatus = KeyboardStatusWatcher(llRoot)
//监听软键盘状态
keyboardStatus.addKeyboardStatusWatcher { isShowed, keyboardHeight ->
val status = if (isShowed) "软键盘显示,高度为${px2dp(keyboardStatus.keyboardHeight)}" else "软键盘收起"
shortToast(status)
}
//软键盘高度
keyboardStatus.keyboardHeight
//软键盘是否显示
keyboardStatus.isKeyboardShowed
//软键盘是否隐藏
keyboardStatus.isKeyboardHidden
LogUtil:日志工具类
初始配置
LogUtil具有默认的配置,你也可以根据自己的需要自行配置。建议在Application中调用setLogGlobalConfig()做全局配置:
AndUtil.init(this)
.setLogGlobalConfig {
……
}
配置如下:
| 方法名称 | 作用 | 默认值 | 备注 | | :------------: | :------------: | :------------: | :------------: | | setLogEnable() | 设置是否显示日志 | true | / | | setMethodCount() | 设置显示的方法数 | 1 | / | | setMethodOffset() | 设置栈偏移量 | 0 | / | | setShowThread() | 设置是否显示线程 | true | / | | setShowGlobalTag() | 设置是否在临时Tag前面显示全局Tag | false | / | | setLogStrategy() | 自定义日志打印策略 | / | / | | setShowBorder() | 设置是否显示边框 | true | 为了美观,建议显示 | | setTag() | 自定义日志打印策略 | LogUtil | / |
对外API
| 成员名称 | 作用 | 接收类 | 备注 | | :------------: | ------------ | :------------: | :------------: | | d() | 打印Debug日志 | String? | 仅支持可空String,为null时打印“null” | | d() | 打印Debug日志 | Any? | 支持如下类型:List、Array、Set和Map | | dt() | 打印带临时性tag的Debug日志 | String? | 仅支持可空String,为null时打印“null” | | dt() | 打印带临时性tag的Debug日志 | Any? | 支持如下类型:List、Array、Set和Map | | v() | 打印Verbose日志 | String? | 仅支持可空String,为null时打印“null” | | vt() | 打印带临时性tag的Verbose日志 | String? | 仅支持可空String,为null时打印“null” | | i() | 打印Verbose日志 | String? | 仅支持可空String,为null时打印“null” | | it() | 打印带临时性tag的Verbose日志 | String? | 仅支持可空String,为null时打印“null” | | w() | 打印Verbose日志 | String? | 仅支持可空String,为null时打印“null” | | wt() | 打印带临时性tag的Verbose日志 | String? | 仅支持可空String,为null时打印“null” | | e() | 打印Error日志 | String? | 仅支持可空String,可抛出异常 | | et() | 打印带临时性tag的Error日志 | String? | 仅支持可空String,可抛出异常 | | wtf() | 打印wtf日志 | String? | 仅支持可空String,为null时打印“null” | | wtft() | 打印带临时性tag的wtf日志 | String? | 仅支持可空String,为null时打印“null” | | json() | 打印格式化的json | String? | 等级为Debug,仅支持可空String | | xml() | 打印格式化的xml | String? | 等级为Debug,仅支持可空String | | buildLogConfig() | 设置LogUtil配置 | Any? | 会优先于AndUtil.setLogGlobalConfig()的全局设置,但不会覆盖它 | | buildLogTempConfig() | 设置临时性的LogUtil配置 | Any? | 打印一次之后就会失效 | | clearLogConfigs() | 清除所有的配置 | Any? | 清除后需要重新配置才能打印 | | resetLogConfig() | 重置LogUtil配置为全局配置 | Any? | / |
buildLogConfig()和buildLogTempConfig()有两种书写形式,分别是DSL和链式调用:
DSL:
buildLogConfig {
setShowThread(false)
}
链式调用(主要供Java代码使用):
