Android P 手机厂商(华为、Oppo,Vivo)屏幕适配实现记录
16lz
2021-01-23
public class AndroidPUtils { /** * 判断是否是华为刘海屏 */ public static boolean hasNotchInScreen(Context context) { boolean ret = false; try { ClassLoader cl = context.getClassLoader(); Class HwNotchSizeUtil = cl.loadClass("com.huawei.android.util.HwNotchSizeUtil"); Method get = HwNotchSizeUtil.getMethod("hasNotchInScreen"); ret = (boolean) get.invoke(HwNotchSizeUtil); } catch (ClassNotFoundException e) { Log.e("test", "hasNotchInScreen ClassNotFoundException"); } catch (NoSuchMethodException e) { Log.e("test", "hasNotchInScreen NoSuchMethodException"); } catch (Exception e) { Log.e("test", "hasNotchInScreen Exception"); } finally { return ret; } } //获取华为刘海的高宽 public static int[] getNotchSize(Context context) { int[] ret = new int[]{0, 0}; try { ClassLoader cl = context.getClassLoader(); Class HwNotchSizeUtil = cl.loadClass("com.huawei.android.util.HwNotchSizeUtil"); Method get = HwNotchSizeUtil.getMethod("getNotchSize"); ret = (int[]) get.invoke(HwNotchSizeUtil); } catch (ClassNotFoundException e){ Log.e("test", "getNotchSize ClassNotFoundException"); } catch (NoSuchMethodException e) { Log.e("test", "getNotchSize NoSuchMethodException"); } catch (Exception e) { Log.e("test", "getNotchSize Exception"); } finally { return ret; } } /** * Oppo */ public static boolean hasNotchInScreenAtOppo(Context context){ return context.getPackageManager().hasSystemFeature("com.oppo.feature.screen.heteromorphism"); } /** * VIVO */ public static final int NOTCH_IN_SCREEN_VOIO=0x00000020;//是否有凹槽 public static final int ROUNDED_IN_SCREEN_VOIO=0x00000008;//是否有圆角 public static boolean hasNotchInScreenAtVoio(Context context){ boolean ret = false; try { ClassLoader cl = context.getClassLoader(); Class FtFeature = cl.loadClass("com.util.FtFeature"); Method get = FtFeature.getMethod("isFeatureSupport",int.class); ret = (boolean) get.invoke(FtFeature,NOTCH_IN_SCREEN_VOIO); } catch (ClassNotFoundException e) { Log.e("test", "hasNotchInScreen ClassNotFoundException"); } catch (NoSuchMethodException e) { Log.e("test", "hasNotchInScreen NoSuchMethodException"); } catch (Exception e) { Log.e("test", "hasNotchInScreen Exception"); } finally { return ret; } }}
更多相关文章
- 华为P30安卓内核编译android kernel build
- 华为面试题:Android 的优势与不足
- Android中为PopupWindow设置半透明背景的方案(兼容华为手机)
- android 华为Mate 10 spinner 点击区域bug
- 华为发布全新IDE:DevCro Studio,Facebook正自研OS系统!去除Google安
- Nexus 6P 外媒评测:华为造出了最好的 Android 手机?
- Android第三课 联调华为手机
- 华为手机Android Studio开发不显示Logcat解决办法
- 华为十年资深架构师推荐最强Android 架构剖析文档