使用kotlin
编写的Android工具类,兼容Androidx
,主要采用扩展函数的方式。目前还在不断补充中。
本说明文档遵循如下的规则:
- 根据工具类文件名的英文字母顺序排序。
- 接收类一栏为“/”的表示该方法或属性为全局成员,可在任意地方调用;接收类有具体类名(如Any、String?等)的表示采用扩展成员的写法;放在包“extension”中;
- 接收类一栏为“—”的表示采用静态类的写法,需要使用类名的形式调用里面的函数或属性,放在包“statics”中;
- 成员包含函数和属性,函数名称后面需要加“()”,属性则不用;
- “JvmName”表示该成员在Java中调用的名称;
- 常量另外写一个表格。
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.lindroy:AndroidxUtilsKt:0.0.1-beta'
}
AndroidxUtilsKt
已经采取反射的方式获取全局的Application
了,但如果获取失败的话,可以在应用的Application
中传入Application
实例,同时也可以调用一些配置方法:
AndUtil.init(this)
.setDefaultSpFile() //设置SharePreferences的默认表名,默认为“sp_util”
成员名称 | 作用 | 接收类 | 备注 |
---|---|---|---|
launchActivity() | 启动一个Activity,可传递Intent | Context | 启动的Activity作为泛型传入 |
launchActivity() | 启动一个Activity,并传递参数 | Context | 启动的Activity作为泛型传入 |
launchActivityForResult() | 启动一个Activity但不传递数据,并获得回调 | FragmentActivity | 启动的Activity作为泛型传入 |
launchActivityForResult() | 启动一个Activity但不传递数据,并获得回调 | Fragment | 启动的Activity作为泛型传入 |
launchActivityForResult() | 启动一个Activity,传入参数并获得回调 | FragmentActivity | 启动的Activity作为泛型传入 |
launchActivityForResult() | 启动一个Activity,传入参数并获得回调 | Fragment | 启动的Activity作为泛型传入 |
extraString() | 获取String类型参数 | FragmentActivity | |
extraBoolean() | 获取Boolean类型参数 | FragmentActivity | |
extraInt() | 获取Int类型参数 | FragmentActivity | |
extraLong() | 获取Long类型参数 | FragmentActivity | |
extraDouble() | 获取Double类型参数 | FragmentActivity | |
extraFloat() | 获取Float类型参数 | FragmentActivity | |
extraParcelable() | 获取Parcelable类型参数 | FragmentActivity | |
extraSerializable() | 获取Serializable类型参数 | FragmentActivity | |
extraParam() | 从Intent中获取参数 | FragmentActivity | |
extraParam() | 从Intent中获取参数 | Fragment |
launchActivityForResult()
方法可以在启动一个Activity时传值,并在其销毁时获得传回来的数据,用于替代onActivityReuslt
,示例用法如下:
launchActivityForResult<MainActivity> { resultCode, data ->
if (resultCode == RESULT_OK && data != null){
}
}
extraXXX()
方法用于从Intent中取值,内部采用了延迟加载,只要第一次使用到这个常量时才会赋值:
private val num by extraInt("num",0)
成员名称 | 作用 | 接收类 | 备注 |
---|---|---|---|
addActivity() | Activity入栈 | — | / |
removeActivity() | Activity出栈 | — | / |
finishActivity() | 关闭一个Activity | — | / |
currentActivity() | 获取当前栈顶Activity | — | 如果栈内元素为空,则返回null |
finishAllActivity() | 清理栈中所有的Activity | — | / |
exitApp() | 退出应用程序 | — | / |
成员名称 | 作用 | 接收类 | 备注 |
---|---|---|---|
getAppVersionName() | 获取应用版本名称,默认为本应用 | Context | / |
getAppVersionCode() | 获取应用版本号,默认为本应用 | Context | / |
getAppSize() | 获取应用大小,默认为本应用 | Context | 返回值单位为b |
getAppIcon() | 获取应用图标,默认为本应用 | Context | 失败时返回null |
文件名为StatusBarUtil
,在Java中调用时使用BarUtil
即可。
成员名称 | 作用 | 接收类 | 备注 |
---|---|---|---|
statusBarHeight | 获取状态栏高度 | / | 单位为px |
setStatusBarColor | 设置纯颜色状态栏 | Activity | 参数为ColorInt |
setStatusBarColorRes() | 设置纯颜色状态栏 | Activity | 参数为ColorRes |
setTransParentStatusBar() | 设置透明状态栏 | Activity | 在界面创建时调用才能生效 |
setGradientStatusBar() | 设置渐变色状态栏 | Activity | 参数为Drawable或DrawableRes |
setStatusBarDarkMode() | 设置状态栏白色字体图标(深色模式) | Activity | / |
setStatusBarLightMode() | 设置状态栏黑色字体图标(浅色模式) | Activity | / |
Demo 中已经给出了沉浸式状态栏的几种适配方法义工参考。
文件名为NavigationBarUtil
,在Java中调用时使用BarUtil
即可。
成员名称 | 作用 | 接收类 | 备注 |
---|---|---|---|
hasNavBar | 手机是否有虚拟导航栏 | / | / |
isNavBarShowed | 当前虚拟导航栏是否显示 | Activity/Window | / |
isNavBarHidden | 当前虚拟导航栏是否隐藏 | Activity/Window | / |
navBarHeight | 获取虚拟导航栏的高度 | / | 必须在布局绘制完成之后调用 |
navBarColor | 获取/设置虚拟导航栏颜色 | Activity/Window | 颜色值为ColorInt |
setNavBarColorRes() | 获取/设置导航栏颜色 | Activity/Window | 参数为资源ID |
成员名称 | 作用 | 接收类 | 备注 |
---|---|---|---|
createBitmapSafely() | 获取应用版本名称,默认为本应用 | / | / |
viewToBitmap() | 将View转换为Bitmap | / | / |
设置系统屏幕亮度时需要动态申请系统设置权限:
<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 |
成员名称 | 作用 | 接收类 | 备注 |
---|---|---|---|
dp2px() | dp转px | / | / |
px2dp() | px转dp | / | / |
sp2px() | sp转px | / | / |
px2sp() | px转sp | / | / |
成员名称 | 作用 | 接收类 | 备注 |
---|---|---|---|
launchSystemSetting() | 打开系统设置界面 | — | / |
launchWifiSetting() | 打开wifi设置界面 | — | / |
launchDialPage() | 打开拨号面板 | — | / |
callPhone() | 直接拨打电话 | — | 动态权限 |
launchBrowse() | 调用浏览器并打开一个网页 | — | / |
launchCamera() | 启动系统相机 | — | 动态权限 |
sendSMS() | 发送短信 | — | 动态权限 |
成员名称 | 作用 | 接收类 | 备注 |
---|---|---|---|
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
常量名 | 值 | 意义 |
---|---|---|
NETWORK_NONE | -1 | 没有网络 |
NETWORK_UNKNOWN | -2 | 未知网络 |
NETWORK_MOBILE | 1 | 移动网络 |
NETWORK_WIFI | 2 | 无线网络 |
成员名称 | 作用 | 接收类 | 备注 |
---|---|---|---|
networkState | 获取当前的网络状态 | / | / |
isWifi | 是否是wifi | / | / |
isMobileNet | 是否是移动网络 | / | / |
isNetworkConnect | 网络是否连接 | / | / |
在Java
中使用时,工具类名为ResUtil
。
成员名称 | JvmName | 作用 | 接收类 | 备注 |
---|---|---|---|---|
getResColor() | getColor() | 获取颜色 | / | / |
getResDrawable() | getDrawable() | 获取图片资源 | / | 返回值可以为null |
getResString() | getString() | 获取字符资源 | / | / |
getResDimenPx() | getDimenPx() | 获取dimens资源 | / | / |
getResDimenDp() | getDimenDp() | 获取dimens中单位为dp的资源 | / | / |
getResDimenSp() | getDimenSp() | 获取dimens中单位为Sp的资源 | / | / |
getResStringArray() | getStringArray() | 获取String数组 | / | / |
getResIntArray() | getIntArray() | 获取Int数组 | / | / |
getResTextArray() | getTextArray() | 获取Char数组 | / | / |
成员名称 | 作用 | 接收类 | 备注 |
---|---|---|---|
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权限 |
成员名称 | 作用 | 接收类 | 备注 |
---|---|---|---|
isSDCardMounted | 判断SD卡是否已挂载 | / | / |
sdCardPath | 获取SD卡路径 | / | 失败时返回空字符 |
sdCardTotalSize | 获取SD卡的总大小 | / | 失败时返回-1 |
sdCardAvailableSize | 获取SD卡可用空间大小 | / | 失败时返回-1 |
成员名称 | 作用 | 接收类 | 备注 |
---|---|---|---|
setSpDefaultFile() | 设置默认的表名 | / | 调用AndUtil.init()方法配置 |
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的数据 | 不输入表名则清除默认表中的数据 | / |
已去除小米手机自带的应用名称。
成员名称 | 作用 | 接收类 | 备注 |
---|---|---|---|
shortToast() | 显示短Toast | / | / |
longToast() | 显示长Toast | / | / |
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 | / |