使用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
SpUtil:SharedPreferences工具类
成员名称
作用
接收类
备注
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
/
/
成员名称
作用
接收类
备注
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
/
Anko
AndroidUtilCode
Qmui