Je calcule actuellement la largeur de l'écran comme ceci:
public static int getScreenWidth(@NonNull Context context) {
DisplayMetrics displayMetrics = new DisplayMetrics();
((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
return displayMetrics.widthPixels;
}
Puisque ces 2 fonctions (getDefaultDisplay () et getsmetrictrics ()) sont maintenant obsolètes, que devrions-nous utiliser à la place?
@RequiresApi(20)
inline val Fragment.windowHeight: Int
get() {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
val metrics = requireActivity().windowManager.currentWindowMetrics
val insets = metrics.windowInsets.getInsets(WindowInsets.Type.systemBars())
metrics.bounds.height() - insets.bottom - insets.top
} else {
val view = requireActivity().window.decorView
val insets = WindowInsetsCompat.toWindowInsetsCompat(view.rootWindowInsets, view).getInsets(WindowInsetsCompat.Type.systemBars())
resources.displayMetrics.heightPixels - insets.bottom - insets.top
}
}
@RequiresApi(20)
inline val Fragment.windowHeight: Int
get() {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
val metrics = requireActivity().windowManager.currentWindowMetrics
val insets = metrics.windowInsets.getInsets(WindowInsets.Type.systemBars())
metrics.bounds.width() - insets.left - insets.right
} else {
val view = requireActivity().window.decorView
val insets = WindowInsetsCompat.toWindowInsetsCompat(view.rootWindowInsets, view).getInsets(WindowInsetsCompat.Type.systemBars())
resources.displayMetrics.widthPixels - insets.left - insets.right
}
}
Cela nécessite androidx.core
version 1.5.x