Skip to content

Commit 8718677

Browse files
committed
Fix getsize() and getMatrix Depreciation
1 parent a9b9529 commit 8718677

File tree

2 files changed

+44
-6
lines changed

2 files changed

+44
-6
lines changed

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

Lines changed: 22 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,25 @@ 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 windowInsets: WindowInsets = windowMetrics.getWindowInsets()
246+
val insets: Insets =
247+
windowInsets.getInsetsIgnoringVisibility(
248+
WindowInsets.Type.navigationBars()
249+
or WindowInsets.Type.displayCutout(),
250+
)
251+
val insetsWidth: Int = insets.right + insets.left
252+
displayMetrics.widthPixels = windowMetrics.bounds.width() - insetsWidth
253+
} else {
254+
(context as Activity)
255+
.windowManager
256+
.defaultDisplay
257+
.getMetrics(displayMetrics)
258+
}
241259
return displayMetrics.widthPixels
242260
}
243261

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

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,38 @@
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
26+
import android.view.WindowMetrics
2327
import com.ichi2.anki.AnkiDroidApp
2428
import kotlin.math.roundToInt
2529

2630
object DisplayUtils {
2731
@Suppress("DEPRECATION") // #9333: defaultDisplay & getSize
2832
fun getDisplayDimensions(wm: WindowManager): Point {
29-
val display = wm.defaultDisplay
3033
val point = Point()
31-
display.getSize(point)
34+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
35+
val windowMetrics: WindowMetrics = wm.currentWindowMetrics
36+
val bounds = windowMetrics.bounds
37+
val windowInsets: WindowInsets = windowMetrics.getWindowInsets()
38+
val insets: Insets =
39+
windowInsets.getInsetsIgnoringVisibility(
40+
WindowInsets.Type.navigationBars()
41+
or WindowInsets.Type.displayCutout(),
42+
)
43+
44+
val insetsWidth: Int = insets.right + insets.left
45+
val insetsHeight: Int = insets.top + insets.bottom
46+
point.x = bounds.width() - (insetsWidth)
47+
point.y = bounds.height() - (insetsHeight)
48+
} else {
49+
val display = wm.defaultDisplay
50+
display.getSize(point)
51+
}
3252
return point
3353
}
3454

0 commit comments

Comments
 (0)