Skip to content

Commit 2c2f2bd

Browse files
jainv4156BrayanDSO
authored andcommitted
Fix getsize() and getMatrix Depreciation
1 parent 1b3ff27 commit 2c2f2bd

File tree

2 files changed

+38
-6
lines changed

2 files changed

+38
-6
lines changed

AnkiDroid/src/main/java/com/ichi2/anki/noteeditor/Toolbar.kt

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,11 @@ import android.content.Context
2121
import android.graphics.Bitmap
2222
import android.graphics.Canvas
2323
import android.graphics.Color
24+
import android.graphics.Insets
2425
import android.graphics.Paint
2526
import android.graphics.drawable.BitmapDrawable
2627
import android.graphics.drawable.Drawable
28+
import android.os.Build
2729
import android.util.AttributeSet
2830
import android.util.DisplayMetrics
2931
import android.util.TypedValue
@@ -33,6 +35,7 @@ import android.view.KeyEvent
3335
import android.view.LayoutInflater
3436
import android.view.View
3537
import android.view.ViewGroup
38+
import android.view.WindowInsets
3639
import android.widget.FrameLayout
3740
import android.widget.LinearLayout
3841
import androidx.annotation.ColorInt
@@ -234,10 +237,23 @@ class Toolbar : FrameLayout {
234237
private val screenWidth: Int
235238
get() {
236239
val displayMetrics = DisplayMetrics()
237-
(context as Activity)
238-
.windowManager
239-
.defaultDisplay
240-
.getMetrics(displayMetrics)
240+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
241+
val windowMetrics =
242+
(context as Activity)
243+
.windowManager
244+
.currentWindowMetrics
245+
val insets: Insets =
246+
windowMetrics.getWindowInsets().getInsetsIgnoringVisibility(
247+
WindowInsets.Type.navigationBars()
248+
or WindowInsets.Type.displayCutout(),
249+
)
250+
displayMetrics.widthPixels = windowMetrics.bounds.width() - (insets.right + insets.left)
251+
} else {
252+
(context as Activity)
253+
.windowManager
254+
.defaultDisplay
255+
.getMetrics(displayMetrics)
256+
}
241257
return displayMetrics.widthPixels
242258
}
243259

AnkiDroid/src/main/java/com/ichi2/utils/DisplayUtils.kt

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,34 @@
1717
package com.ichi2.utils
1818

1919
import android.content.Context
20+
import android.graphics.Insets
2021
import android.graphics.Point
22+
import android.os.Build
2123
import android.view.Window
24+
import android.view.WindowInsets
2225
import android.view.WindowManager
2326
import com.ichi2.anki.AnkiDroidApp
2427
import kotlin.math.roundToInt
2528

2629
object DisplayUtils {
2730
@Suppress("DEPRECATION") // #9333: defaultDisplay & getSize
2831
fun getDisplayDimensions(wm: WindowManager): Point {
29-
val display = wm.defaultDisplay
3032
val point = Point()
31-
display.getSize(point)
33+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
34+
val bounds = wm.currentWindowMetrics.bounds
35+
val insets: Insets =
36+
wm.currentWindowMetrics
37+
.getWindowInsets()
38+
.getInsetsIgnoringVisibility(
39+
WindowInsets.Type.navigationBars()
40+
or WindowInsets.Type.displayCutout(),
41+
)
42+
point.x = bounds.width() - (insets.right + insets.left)
43+
point.y = bounds.height() - (insets.top + insets.bottom)
44+
} else {
45+
val display = wm.defaultDisplay
46+
display.getSize(point)
47+
}
3248
return point
3349
}
3450

0 commit comments

Comments
 (0)