gpt4 book ai didi

android - 在 API 级别 30 (Android 11) : getDefaultDisplay() and getMetrics() are now deprecated. 上获取屏幕宽度我们应该改用什么?

转载 作者:行者123 更新时间:2023-12-03 13:25:40 26 4
gpt4 key购买 nike

我目前这样计算屏幕宽度:

public static int getScreenWidth(@NonNull Context context) {
DisplayMetrics displayMetrics = new DisplayMetrics();
((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
return displayMetrics.widthPixels;
}
由于这两个函数( getDefaultDisplay() getMetrics() )现在已被弃用,我们应该改用什么?

最佳答案

为了计算屏幕宽度减去任何系统栏,这应该有效:

public static int getScreenWidth(@NonNull Activity activity) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
WindowMetrics windowMetrics = activity.getWindowManager().getCurrentWindowMetrics();
Insets insets = windowMetrics.getWindowInsets()
.getInsetsIgnoringVisibility(WindowInsets.Type.systemBars());
return windowMetrics.getBounds().width() - insets.left - insets.right;
} else {
DisplayMetrics displayMetrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
return displayMetrics.widthPixels;
}
}
请注意,这并不完全相同:使用高度测试会产生不同的结果,并且我无法使用新 API 复制旧 API 的功能(部分原因是旧 API 的行为有点棘手原因并不总是你想要的,因此它被弃用了)。但是,在实践中,它应该足以作为许多事情的通用屏幕宽度。

关于android - 在 API 级别 30 (Android 11) : getDefaultDisplay() and getMetrics() are now deprecated. 上获取屏幕宽度我们应该改用什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63407883/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com