目前我面临一个问题,要检测移动设备是否支持 android 中的缺口显示。
谁能帮我解决这个问题? (我需要使用 android studio 中的代码来执行此操作)
谢谢。
最佳答案
一些 Oreo 设备也有缺口显示,如果您的目标是支持所有操作系统,那么您可以使用我的解决方案。根据 Material 设计指南,Android 设备的状态栏高度为 24dp。您可以使用以下方法获取设备状态栏高度和设备密度,并检查状态栏高度是否大于 24dp。如果它的高度超过 24dp,那么它就会显示缺口,然后您可以根据您的要求处理您的 View 位置。这也适用于奥利奥。
int statusBarHeight = 0;
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
statusBarHeight = getResources().getDimensionPixelSize(resourceId);
}
//DP转像素
public static int convertDpToPixel ( float dp){
DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
float px = dp * (metrics.densityDpi / 160f);
return Math.round(px);
}
//根据您的要求进行 UI 调整
if (statusBarHeight > convertDpToPixel(24)) {
RelativeLayout.LayoutParams topbarLp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
topbarlp.setMargins(0, statusBarHeight, 0, 0);
//Set above layout params to your layout which was getting cut because of notch
topbar.setLayoutParams(topbarlp)
}
关于android - 如何检测设备是否支持刘海屏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52514075/