经常有一些小操作我会单独拉到扩展函数里,以便于调用,这里分享一下,也是为了以后自己抄自己代码的时候方便找

在合适的位置创建新的 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
}

有新的我会持续更新,虽然应该没人看(