android - 如何检测设备是否支持刘海屏?

标签 android

目前我面临一个问题,要检测移动设备是否支持 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/

相关文章:

android - ionic 构建安卓错误

java - 如何在 Java/Android-Studio 中绘制一个简单的可重绘矩形?

android - 在 Android Studio 中从 ScrollView 预览完整的 XML,无需电话框架

android - GLSL错误: No vertex attrib is enabled in a draw call

java - RecyclerView 上的进度指示器

java - 具有两个 Android 应用程序模块的 Gradle 项目

android - getCompoundDrawables 在 onCreateView 内部返回 null,但之后不会

安卓工作室,CMake。如何在编译时打印调试信息?

android - 当我将我的应用程序带到前台时,不会加载最后一个 Activity

java - 如何在java中按升序对xml代码进行排序