博客 / 詳情

返回

NavigationBarUtil

private const val RES_NAME_NAV_BAR = "navigationBarBackground"

private val Context.navBarResId
    get() = resources.getIdentifier(
        "navigation_bar_height",
        "dimen", "android"
    )

/**
 * 獲取虛擬導航欄的高度,必須在佈局繪製完成之後調用才能獲取到正確的值(可以在onWindowFocusChanged()中調用)
 * 單位為px
 */
val Context.navBarHeight: Int
    get() {
        val resourceId = navBarResId
        return if (resourceId != 0) {
            resources.getDimensionPixelSize(resourceId)
        } else 0
    }

/**
 * 手機是否有虛擬導航欄
 */
val Context.hasNavBar
    @JvmName("hasNavBar")
    get() = navBarResId != 0

/**
 * 當前虛擬導航欄是否顯示
 */
val Activity.isNavBarShowed: Boolean
    get()  {
        val viewGroup = window.decorView as ViewGroup? ?: return false
        return (0 until viewGroup.childCount).firstOrNull {
            viewGroup.getChildAt(it).id != View.NO_ID
                && this.resources.getResourceEntryName(viewGroup.getChildAt(it).id) == RES_NAME_NAV_BAR
        } != null
    }
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.