暂停维护 由于本人疏忽,个别类丢失了,所以建议需要使用的朋友直接参考复制里面的代码。
使用kotlin编写的Android工具类,主要采用扩展函数的方式。目前还在不断补充中。
本说明文档遵循如下的规则:
- 根据工具类文件名的英文字母顺序排序。
- 接收类一栏为“/”的表示该方法或属性为全局成员,可在任意地方调用;接收类有具体类名(如Any、String?等)的表示采用扩展成员的写法;放在包“extension”中;
- 接收类一栏为“—”的表示采用静态类的写法,需要使用类名的形式调用里面的函数或属性,放在包“statics”中;
- 成员包含函数和属性,函数名称后面需要加“()”,属性则不用;
- “JvmName”表示该成员在Java中调用的名称;
- 常量另外写一个表格。
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.lindroy:AndroidUtilsKt:latest-version'
}
latest-version参见图标jitpack后面的版本号。
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:栏工具类
文件名为StatusBarUtil,在Java中调用时使用BarUtil即可。
| 成员名称 | 作用 | 接收类 | 备注 |
|---|---|---|---|
| statusBarHeight | 获取状态栏高度 | / | 单位为px |
| setStatusBarColor | 设置纯颜色状态栏 | Activity | 参数为ColorInt |
| setStatusBarColorRes() | 设置纯颜色状态栏 | Activity | 参数为ColorRes |
| setTransParentStatusBar() | 设置透明状态栏 | Activity | 在界面创建时调用才能生效 |
| setGradientStatusBar() | 设置渐变色状态栏 | Activity | 参数为Drawable或DrawableRes |
| setStatusBarDarkMode() | 设置状态栏白色字体图标(深色模式) | Activity | / |
| setStatusBarLightMode() | 设置状态栏黑色字体图标(浅色模式) | Activity | / |
文件名为NavigationBarUtil,在Java中调用时使用BarUtil即可。
| 成员名称 | 作用 | 接收类 | 备注 |
|---|---|---|---|
| hasNavBar | 手机是否有虚拟导航栏 | / | / |
| isNavBarShowed | 当前虚拟导航栏是否显示 | Activity/Window | / |
| isNavBarHidden | 当前虚拟导航栏是否隐藏 | Activity/Window | / |
| navBarHeight | 获取虚拟导航栏的高度 | / | 必须在布局绘制完成之后调用 |
| navBarColor | 获取/设置虚拟导航栏颜色 | Activity/Window | 颜色值为ColorInt |
| setNavBarColorRes() | 获取/设置导航栏颜色 | Activity/Window | 参数为资源ID |
| 成员名称 | 作用 | 接收类 | 备注 |
|---|---|---|---|
| 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.isKeyboardHiddenLogUtil:日志工具类
LogUtil具有默认的配置,你也可以根据自己的需要自行配置。建议在Application中调用setLogGlobalConfig()做全局配置:
AndUtil.init(this)
.setLogGlobalConfig {
……
}配置如下:
| 方法名称 | 作用 | 默认值 | 备注 |
|---|---|---|---|
| setLogEnable() | 设置是否显示日志 | true | / |
| setMethodCount() | 设置显示的方法数 | 1 | / |
| setMethodOffset() | 设置栈偏移量 | 0 | / |
| setShowThread() | 设置是否显示线程 | true | / |
| setShowGlobalTag() | 设置是否在临时Tag前面显示全局Tag | false | / |
| setLogStrategy() | 自定义日志打印策略 | / | / |
| setShowBorder() | 设置是否显示边框 | true | 为了美观,建议显示 |
| setTag() | 自定义日志打印策略 | LogUtil | / |
| 成员名称 | 作用 | 接收类 | 备注 |
|---|---|---|---|
| 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代码使用):
buildLogTempConfig()
.setShowThread(true)
.build()注意:链式调用最后需要调用build()方法,DSL则不必。
NetworkUtil:网络状态工具类
| 常量名 | 值 | 意义 |
|---|---|---|
| NETWORK_NONE | -1 | 没有网络 |
| NETWORK_UNKNOWN | -2 | 未知网络 |
| NETWORK_MOBILE | 1 | 移动网络 |
| NETWORK_WIFI | 2 | 无线网络 |
| 成员名称 | 作用 | 接收类 | 备注 |
|---|---|---|---|
| networkState | 获取当前的网络状态 | / | / |
| isWifi | 是否是wifi | / | / |
| isMobileNet | 是否是移动网络 | / | / |
| isNetworkConnect | 网络是否连接 | / | / |
| 成员名称 | 作用 | 接收类 | 备注 |
|---|---|---|---|
| isMobile | 校验内地手机号码 | String | / |
| isEmail | 校验电子邮箱 | String | / |
| isWebUrl | 校验网络链接 | String | / |
| isNumber | 校验数字 | String | / |
| isPositiveInt | 校验正整数 | String | / |
| isNegativeInt | 校验负整数 | String | / |
| isLetter | 校验字母 | String | / |
| isUpperCaseLetter | 校验大写字母 | String | / |
| isLowerCaseLetter | 校验小写字母 | String | / |
| isChinese | 校验汉字 | String | / |
| isQQ | 校验QQ号码 | String | / |
| isMacaoMobile | 校验澳门手机号码 | String | / |
ResourceUtil:资源工具类
在Java中使用时,工具类名为ResUtil。
| 成员名称 | JvmName | 作用 | 接收类 | 备注 |
|---|---|---|---|---|
| getResColor() | getColor() | 获取颜色 | / | / |
| getResDrawable() | getDrawable() | 获取图片资源 | / | 返回值可以为null |
| getResString() | getString() | 获取字符资源 | / | / |
| getResDimenPx() | getDimenPx() | 获取dimens资源 | / | / |
| getResDimenDp() | getDimenDp() | 获取dimens中单位为dp的资源 | / | / |
| getResDimenSp() | getDimenSp() | 获取dimens中单位为Sp的资源 | / | / |
ScreenUtil:屏幕相关工具类
| 成员名称 | 作用 | 接收类 | 备注 |
|---|---|---|---|
| screenWidth | 获取屏幕宽度 | / | / |
| screenHeight | 获取屏幕高度 | / | / |
| screenDensity | 获取屏幕密度 | / | / |
| screenDPI | 获取屏幕DPI | Any | / |
| screenOrientation | 获取屏幕方向 | / | / |
| isLandscape | 是否是横屏 | / | / |
| isPortrait | 是否是竖屏 | / | / |
| setScreenLandscape() | 设置横屏 | Activity | / |
| setScreenPortrait() | 设置竖屏 | Activity | / |
| toggleScreenOrientation() | 横竖屏切换 | Activity | / |
| lockScreenOrientation() | 锁定屏幕方向 | Activity | / |
| unlockScreenOrientation() | 取消锁定屏幕方向 | Activity | / |
| isFullScreen | 判断和设置是否全屏 | Activity | 赋值为true设置成全屏 |
| setFullScreen() | 设置全屏 | Activity | / |
| setNonFullScreen() | 设置非全屏 | Activity | / |
| isScreenOn | 屏幕是否亮屏 | / | / |
| isScreenOff | 屏幕是否熄灭 | / | / |
| isScreenLocked | 屏幕是否锁屏 | / | / |
| isScreenUnlocked | 屏幕是否解锁 | / | / |
| isKeepScreenOn | 判断和设置是否保持屏幕常亮 | Activity | 只作用于当前窗口 |
| setKeepScreenOn() | 保持屏幕常亮 | Activity | 只作用于当前窗口 |
| setNonKeepScreenOn | 取消保持屏幕常亮 | Activity | 只作用于当前窗口 |
| getScreenAutoLockTime() | 获取自动锁屏时间 | / | 需要WRITE_SETTINGS权限 |
| setScreenAutoLockTime() | 设置自动锁屏时间 | / | 需要WRITE_SETTINGS权限 |
| setScreenAutoLockNever() | 设置永不自动锁屏 | / | 需要WRITE_SETTINGS权限 |
SDCardUtil:SD卡工具类
| 成员名称 | 作用 | 接收类 | 备注 |
|---|---|---|---|
| isSDCardMounted | 判断SD卡是否已挂载 | / | / |
| sdCardPath | 获取SD卡路径 | / | 失败时返回空字符 |
| sdCardTotalSize | 获取SD卡的总大小 | / | 失败时返回-1 |
| sdCardAvailableSize | 获取SD卡可用空间大小 | / | 失败时返回-1 |
如果给某段文字设置的特效只有一种,可以使用如下比较简单的函数:
| 成员名称 | 作用 | 接收类 | 备注 |
|---|---|---|---|
| setFgColorSpan() | 设置前景色 | TextView | / |
| setBgColorSpan() | 设置背景色 | TextView | / |
| setStrikethroughSpan() | 设置删除线 | TextView | / |
| setUnderlineSpan() | 设置下划线 | TextView | / |
| setClickableSpan() | 设置可点击文本 | TextView | / |
| setStyleSpan() | 设置文字样式 | TextView | / |
| setBoldSpan() | 设置粗体字 | TextView | / |
| setItalicSpan() | 设置斜体字 | TextView | / |
| setBoldItalicSpan() | 设置粗体和斜体字 | TextView | / |
| setUrlSpan() | 设置超链接 | TextView | / |
| setRelativeSizeSpan() | 设置文字相对大小 | TextView | / |
| setSuperScriptSpan() | 设置文字上标 | TextView | / |
| setSubscriptSpan() | 设置文字下标 | TextView | / |
对于需要给同一段文字设置多种特效需求,这里提供了另一套可以链式调用的函数,首先使用如下的扩展函数开启链式调用:
| 成员名称 | 作用 | 接收类 | 备注 |
|---|---|---|---|
| buildSpan | 设置前景色 | TextView | / |
然后则可以使用构造类SpanHelper.Builder中的函数去设置特效了:
| 函数名称 | 作用 | 备注 |
|---|---|---|
| setStart() | 设置文字特效开始的位置下标 | / |
| setEnd() | 设置文字特效结束的位置下标 | / |
| setStartEnd() | 同时设置文字特效开始和结束的位置 | / |
| setFlag() | 设置标识 | 一共4种 |
| setFgColor() | 设置前景色 | / |
| setBgColor() | 设置背景色 | / |
| setStrikethrough() | 设置删除线 | / |
| setUnderline() | 设置下划线 | / |
| setClickable() | 设置可点击文本 | / |
| setUrl() | 设置超链接 | / |
| setStyle() | 设置文字样式 | / |
| setBold() | 设置文字为粗体 | / |
| setItalic() | 设置文字为斜体 | / |
| setBoldItalic() | 设置文字为粗体和斜体 | / |
| setRelativeSize() | 设置文字相对大小 | / |
| setSuperScript() | 设置文字上标 | / |
| setSubscript() | 设置文字下标 | / |
| create() | 设置特效完毕 | / |
调用示例:
tvSuperScript.buildSpan("设置文字上标:210=1024")
.setStartEnd(8, 10)
.setRelativeSize(0.6F)
.setSuperScript()
.create()或者使用DSL的风格:
tvSubscript.buildSpan("设置文字下标:H20") {
setStartEnd(8, 9)
setRelativeSize(0.6F)
setSubscript()
create()
}SpUtil:SharedPreferences工具类
| 成员名称 | 作用 | 接收类 | 备注 |
|---|---|---|---|
| setSpDefaultFile() | 设置默认的表名 | / | internal |
| putSpString() | 存储字符串 | / | / |
| getSpString() | 取出存储的字符串 | / | / |
| putSpBoolean() | 存储布尔值 | / | / |
| getSpBoolean() | 取出存储的布尔值 | / | / |
| putSpInt() | 存储Int值 | / | / |
| getSpInt() | 取出存储的Int值 | / | / |
| putSpLong() | 存储Long值 | / | / |
| getSpLong() | 取出存储的Long值 | / | / |
| putSpFloat() | 存储Float值 | / | / |
| getSpFloat() | 取出存储的Float值 | / | / |
| putSpStrSet() | 存储StringSet | / | / |
| getSpStrSet() | 取出存储的StringSet | / | / |
| putSp() | 保存数据 | / | 数据类型由传入的值确定 |
| getSp() | 取出数据 | / | 数据类型由传入的默认值确定 |
| deleteSpKey() | 删除某条数据 | / | / |
| clearSp() | 清除SharedPreferences的数据 | 不输入表名则清除默认表中的数据 | / |
TimeUtil:时间工具类
| 成员名称 | 作用 | 接收类 | 备注 |
|---|---|---|---|
| serverFormat | 服务器返回的时间格式 | Any | internal,仅用于全局配置 |
| currentYear | 获取当前年份 | Any | / |
| currentMonth | 获取当前年份 | Any | / |
| currentDay | 获取当前日 | Any | / |
| currentTimeMillis | 获取当前时间戳 | Any | / |
| formatCurrentDate | 获取当前日期 | Any | 默认格式为"yyyy-MM-dd" |
| formatCurrentDateTime | 获取当前时间 | Any | 默认格式为"yyyy-MM-dd HH:mm" |
| formatCurrentTime | 获取当前时间 | Any | "HH:mm" |
| formatTimeYMD | 将服务器时间格式转换为年月日 | String | / |
| formatTimeYMDChinese | 将服务器时间格式转换为年月日(带汉字) | String | / |
| formatTimeHM | 将服务器时间格式转换为时分 | String | / |
| formatTimeYMDHM | 将服务器时间格式转换为年月日时分 | String | / |
| formatTimeYMDHMS | 将服务器时间格式转换为年月日时分秒 | String | / |
| formatRelativeTime | 获取某个时间与当前时间的比较值 | String | / |
ToastUtil:Toast工具类
已去除小米手机自带的应用名称。
| 成员名称 | 作用 | 接收类 | 备注 |
|---|---|---|---|
| shortToast() | 显示短Toast | / | / |
| longToast() | 显示长Toast | / | / |
| 成员名称 | 作用 | 接收类 | 备注 |
|---|---|---|---|
| vibrator | 获取Vibrator实例 | — | / |
| hasVibrator | 检测设备是否具有振动器 | — | / |
| vibrate() | 开启振动 | — | / |
| cancel() | 取消振动 | — | / |
ViewUtil:View工具类
| 成员名称 | 作用 | 接收类 | 备注 |
|---|---|---|---|
| inflate() | 填充一个View | / | / |
| isVisible | 当前View是否可见 | View | / |
| isInvisible | 当前View是否不可见 | View | / |
| isGone | 当前View是否隐藏 | View | / |
| setGone() | 将View设置为隐藏 | View | / |
| setVisible() | 将View设置为可见 | View | / |
| setInVisible() | 将View设置为不可见 | View | / |
| setWidth() | 设置View的宽度 | View | / |
| setHeight() | 设置View的高度 | View | / |
| setWidthAndHeight() | 设置View的宽度和高度 | — | / |
| setNewPadding() | 设置View的padding | View | / |
| viewHeight | 获取View的高度 | View | 如果是“math_parent”属性则无法获取,值为0。 |
| viewWidth | 获取View的宽度 | View | 同上 |
| textString | 获取TextView的String内容 | TextView | / |
| textLength | 获取TextView的String内容长度 | TextView | / |
| isTextEmpty | 判断TextView的内容是否为空 | TextView | / |
| isTextNullOrEmpty | 判断TextView的内容是否为null或空 | TextView | / |
| isTextNotEmpty | 判断TextView的内容是否为非空 | TextView | / |
| isTextBlank | 判断TextView的内容是否为空白 | TextView | / |
| isTextNullOrBlank | 判断TextView的内容是否为null或空白 | TextView | / |
| isTextNotBlank | 判断TextView的内容是否为非空白 | TextView | / |