经常有一些小操作我会单独拉到扩展函数里,以便于调用,这里分享一下,也是为了以后自己抄自己代码的时候方便找
在合适的位置创建新的 Kotlin 文件,名字随便,如果够多的话可以单独开一个包放不同种类的文件,我这用到的数量不会很多所以只创建了一个 ext.kt
文件。
Kotlin 的扩展函数,通俗的说就是你可以自己封装一些方法,能更加简单的调用。
快速打 Log.d
至少于我来说,为了打 Log 得切大写还得找句号是一件很累的事情,打 TAG 在非必要的情况下也麻烦,所以简单封装了这个:
fun logd(message: String) =
Log.d("hjt", message)
使用的话直接:
logd("芜湖")
Android Studio 理论会自动导入 ext.kt。
快速打 Toast
短 Toast
即 Toast.LENGTH_SHORT
:
fun Context?.toast(message: CharSequence) =
Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
使用,通常可以不用带上下文,但是不排除有些情况下需要,有报错的时候可以试试带上下文。
toast("起飞")
//或者
context.toast("起飞")
长 Toast
即 Toast.LENGTH_LONG
:
fun Context?.longtoast(message: CharSequence) =
Toast.makeText(this, message, Toast.LENGTH_LONG).show()
使用,通常可以不用带上下文,但是不排除有些情况下需要,有报错的时候可以试试带上下文。
longtoast("起飞")
//或者
context.longtoast("起飞")
快速打 Snackbar
Snackbar 其实我用的不算很多,但是有时候还是挺有用的,毕竟比 Toast 醒目。
注意,Snackbar 的扩展函数我是没有带
show()
方法的,原因是 Snackbar 相比 Toast 可能经常需要定制,如setAction()
之类的,show()
似乎时候在末尾出现,所以需要自己添加。
短 Snackbar
即 Snackbar.LENGTH_SHORT
:
fun View.sbar(message: CharSequence) =
Snackbar.make(this, message, Snackbar.LENGTH_SHORT)
使用,通常需要带上下文。
view.sbar("逮虾户").XXX.show()
长 Snackbar
即 Snackbar.LENGTH_LONG
:
fun View.sbarlong(message: CharSequence) =
Snackbar.make(this, message, Snackbar.LENGTH_LONG)
使用,通常需要带上下文。
view.sbarlong("逮虾户").XXX.show()
不定长 Snackbar
即 Snackbar.LENGTH_INDEFINITE
:
fun View.sbarin(message: CharSequence) =
Snackbar.make(this, message, Snackbar.LENGTH_INDEFINITE)
使用,通常需要带上下文。
view.sbarin("逮虾户").XXX.show()
检测是否开启暗色模式
网上挖的,我倒是一直在用这个……
fun getDarkModeStatus(context: Context): Boolean {
val mode: Int =
context.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK
return mode == Configuration.UI_MODE_NIGHT_YES
}
返回布尔值,可以根据返回的值来确定是否已经开启了深色模式。
通常我会在 Activity 中配合以下代码来进行对状态栏图标的适配(否则可能会导致白底下白色图标,看不清)
if (!getDarkModeStatus(this)) {
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
}
有新的我会持续更新,虽然应该没人看(
共有 0 条评论