所以我有一个在LinearLayout中定义ImageView的应用程序。ImageView和LinearLayout的宽度和高度被指定为“match_parent”,并且ImageView看起来与屏幕的尺寸相同。然而,当我试图获取屏幕的尺寸以创建位图并将其附加到ImageView时,高度与屏幕的高度匹配,但宽度返回时略小于屏幕的宽度。我正在使用以下代码来获取宽度和高度。
val width = resources.displayMetrics.widthPixels
val height = resources.displayMetrics.heightPixels
还有一点:
windowManager.currentWindowMetrics.bounds.width()
windowManager.currentWindowMetrics.bounds.height()
但这需要API级别30(我希望我的应用程序能够从API级别24运行),即使我将API的最低级别提高到30,也会给出不正确的宽度值。
如果我使用这个,也会发生同样的事情:
val width = windowManager.maximumWindowMetrics.bounds.width()
val height = windowManager.maximumWindowMetrics.bounds.height()
这是不赞成的:
windowManager.defaultDisplay
所以我真的不确定如何获得正确的屏幕宽度。对于记录,创建位图的代码如下所示:
val bitmap = Bitmap.createBitmap(width.toInt(), height.toInt(), Bitmap.Config.ARGB_8888)
我现在想知道(在发布问题后)使用ViewTreeObserver来获取ImageView的尺寸(与屏幕大小相同)是否可行,但似乎应该有一种更简单的方法来做到这一点。