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; } } }
Android P 手机厂商(华为、Oppo,Vivo)屏幕适配实现记录
最新推荐文章于 2021-06-05 02:48:48 发布