Masalah ini baru-baru ini menjadi relevan bagi saya karena takik di Pixel 3XL saya. Saya benar-benar menyukai solusi pengembang android , tetapi saya ingin bisa mendapatkan ketinggian status bar sesuai keinginan, karena itu secara khusus diperlukan untuk animasi layar penuh yang harus saya mainkan. Fungsi di bawah ini mengaktifkan kueri yang andal:
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
}
}
Dan kemudian di kelas aktivitas:
fun blurView() {
this.runOnUiThread {
Helper.blurView(this)
}
}
Anda tentu saja ingin membuat referensi yang lemah dari aktivitas ke parameter metode kelas Helper statis, tetapi demi singkatnya saya menahan diri dalam contoh ini. Itu blurBitmap
dan errorHudFrameLayout
dihilangkan karena alasan yang sama, karena mereka tidak secara langsung berkaitan dengan mendapatkan ketinggian bilah status.