Высота строки состояния в Android - PullRequest
302 голосов
/ 04 августа 2010

Какая высота строки состояния в Android? Это всегда одно и то же?

По моим измерениям кажется, что это 25dp, но я не уверен, что он имеет одинаковую высоту на всех платформах.

(я хочу знать это, чтобы правильно реализовать переход с постепенным исчезновением из действия, у которого нет строки состояния, к тому, у которого есть строка)

Ответы [ 21 ]

0 голосов
/ 01 ноября 2018

Этот вопрос недавно стал актуальным для меня из-за выемки в моем Pixel 3XL. Мне очень понравилось решение разработчика Android , но я хотел иметь возможность получить высоту строки состояния по своему желанию, поскольку это было особенно необходимо для полноэкранной анимации, которую мне нужно было воспроизвести. Функция ниже включила надежный запрос:

private val DEFAULT_INSET = 96
fun getInsets(view: View?): Int {
     var inset = DEFAULT_INSET
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//Safe because only P supports notches
          inset = view?.rootWindowInsets?.stableInsetTop ?: DEFAULT_INSET
     }
     return inset
}

fun blurView(rootView: View?, a: SpacesActivity?) {
    val screenBitmap = getBitmapFromView(rootView!!)
    val heightDifference = getInsets(rootView)
    val croppedMap = Bitmap.createBitmap(
                    screenBitmap, 0, heightDifference,
                    screenBitmap.width,
                    screenBitmap.height - heightDifference)
    val blurredScreen = blurBitmap(croppedMap)
    if (blurredScreen != null) {
         val myDrawable = BitmapDrawable(a!!.resources, blurredScreen)
         a.errorHudFrameLayout?.background = myDrawable
         a.appBarLayout?.visibility = View.INVISIBLE
   }
}

А потом в классе деятельности:

fun blurView() {
    this.runOnUiThread {
        Helper.blurView(this)
    }
}

Вы, конечно, захотите передать слабую ссылку действия на статический параметр метода класса Helper, но для краткости я воздержался в этом примере. blurBitmap и errorHudFrameLayout опущены по той же причине, поскольку они не имеют прямого отношения к получению высоты строки состояния.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...