• Android手机刘海屏(附工具类)


    工具类

    根据VIVO、OPPO、华为官方文档,这里整理了一个刘海屏工具类,判断设备是否为刘海屏,其他厂商公布相关方法后也会在此更新。

    OPPO:

        /**
         * OPPO
         *
         * @param context Context
         * @return hasNotch
         */
        public static boolean hasNotchInOppo(Context context) {
            return context.getPackageManager().hasSystemFeature("com.oppo.feature.screen.heteromorphism");
        }
    

    VIVO:

        /**
         * VIVO
         * <p>
         * android.util.FtFeature
         * public static boolean isFeatureSupport(int mask);
         * <p>
         * 参数:
         * 0x00000020表示是否有凹槽;
         * 0x00000008表示是否有圆角。
         *
         * @param context Context
         * @return hasNotch
         */
        public static boolean hasNotchInVivo(Context context) {
            boolean hasNotch = false;
            try {
                ClassLoader cl = context.getClassLoader();
                Class FtFeature = cl.loadClass("android.util.FtFeature");
                Method get = FtFeature.getMethod("isFeatureSupport");
                hasNotch = (boolean) get.invoke(FtFeature, new Object[]{0x00000020});
            } catch (Exception e) {
                e.printStackTrace();
            }
            return hasNotch;
        }
    

    华为:

        /**
         * HUAWEI
         * com.huawei.android.util.HwNotchSizeUtil
         * public static boolean hasNotchInScreen()
         *
         * @param context Context
         * @return hasNotch
         */
        public static boolean hasNotchInHuawei(Context context) {
            boolean hasNotch = false;
            try {
                ClassLoader cl = context.getClassLoader();
                Class HwNotchSizeUtil = cl.loadClass("com.huawei.android.util.HwNotchSizeUtil");
                Method get = HwNotchSizeUtil.getMethod("hasNotchInScreen");
                hasNotch = (boolean) get.invoke(HwNotchSizeUtil);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return hasNotch;
        }
    

    除了OPPO的判断简单点外,其他两家厂商都是用反射来获取刘海屏幕信息的。除了VIVO外,另外两家设备都测试过了,有相关设备的开发者可以自行测试一下,欢迎评论私信反馈。

    结语

    最后,不得不感叹苹果的号召力。跟风也好,抄袭也罢,最为开发者,吐槽之后,还是得做好应用适配。

    ---小米的方案:

    1.如何判断设备为 Notch 机型

    系统增加了 property ro.miui.notch,值为1时则是 Notch 屏手机。

    SystemProperties.getInt("ro.miui.notch", 0) == 1;   


     https://blog.csdn.net/djy1992/article/details/80688376

     https://blog.csdn.net/DJY1992/article/details/80689632

    转载:  https://juejin.im/entry/5acf72555188255c9323ad6d

  • 相关阅读:
    H5纯前端获取视频第一帧、大小、尺寸、类型等
    HTML5 拖放(Drag 和 Drop)
    HTML5 MathML:在文档中使用 MathML 元素,对应的标签是 <math>...</math>
    HTML5 内联 SVG:什么是SVG?SVG优势
    docker-machine安装教程
    Manjaro系统和软件安装记录
    geektime专栏《Java并发编程实战》笔记【待完成】
    kubernetes之三 使用kubectl在k8s上部署应用
    给虚拟机CentOS7扩容(lvm方式)
    分析SQL的执行过程
  • 原文地址:https://www.cnblogs.com/porter/p/9283891.html
Copyright © 2020-2023  润新知