工具类

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

OPPO:

  1. /**
  2. * OPPO
  3. *
  4. * @param context Context
  5. * @return hasNotch
  6. */
  7. public static boolean hasNotchInOppo(Context context) {
  8. return context.getPackageManager().hasSystemFeature("com.oppo.feature.screen.heteromorphism");
  9. }

VIVO:

  1. /**
  2. * VIVO
  3. * <p>
  4. * android.util.FtFeature
  5. * public static boolean isFeatureSupport(int mask);
  6. * <p>
  7. * 参数:
  8. * 0x00000020表示是否有凹槽;
  9. * 0x00000008表示是否有圆角。
  10. *
  11. * @param context Context
  12. * @return hasNotch
  13. */
  14. public static boolean hasNotchInVivo(Context context) {
  15. boolean hasNotch = false;
  16. try {
  17. ClassLoader cl = context.getClassLoader();
  18. Class FtFeature = cl.loadClass("android.util.FtFeature");
  19. Method get = FtFeature.getMethod("isFeatureSupport");
  20. hasNotch = (boolean) get.invoke(FtFeature, new Object[]{0x00000020});
  21. } catch (Exception e) {
  22. e.printStackTrace();
  23. }
  24. return hasNotch;
  25. }

华为:

  1. /**
  2. * HUAWEI
  3. * com.huawei.android.util.HwNotchSizeUtil
  4. * public static boolean hasNotchInScreen()
  5. *
  6. * @param context Context
  7. * @return hasNotch
  8. */
  9. public static boolean hasNotchInHuawei(Context context) {
  10. boolean hasNotch = false;
  11. try {
  12. ClassLoader cl = context.getClassLoader();
  13. Class HwNotchSizeUtil = cl.loadClass("com.huawei.android.util.HwNotchSizeUtil");
  14. Method get = HwNotchSizeUtil.getMethod("hasNotchInScreen");
  15. hasNotch = (boolean) get.invoke(HwNotchSizeUtil);
  16. } catch (Exception e) {
  17. e.printStackTrace();
  18. }
  19. return hasNotch;
  20. }

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

结语

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

---小米的方案:

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

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

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

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

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

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

Android手机刘海屏(附工具类)的更多相关文章

  1. Android 监听手机锁屏的工具类

    自定义 ScreenListener package com.example.teagardenhd.Listener; import android.content.BroadcastReceive ...

  2. Java中Date类型如何向前向后滚动时间,( 附工具类)

    Java中的Date类型向前向后滚动时间(附工具类) 废话不多说,先看工具类: import java.text.SimpleDateFormat; import java.util.Calendar ...

  3. Android开发之常用必备工具类图片bitmap转成字符串string与String字符串转换为bitmap图片格式

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 博客园主页:http://www.cnblogs.com/mcxiaobing ...

  4. java POI 导出到word文档 (附工具类)

    1,导入poi相关依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-o ...

  5. Android 分享一个SharedPreferences的工具类,方便保存数据

    我们平常保存一些数据,都会用到SharedPreferences,他是保存在手机里面的,具体路径是data/data/你的包名/shared_prefs/保存的文件名.xml, SharedPrefe ...

  6. Android—关于自定义对话框的工具类

    开发中有很多地方会用到自定义对话框,为了避免不必要的城府代码,在此总结出一个工具类. 弹出对话框的地方很多,但是都大同小异,不同无非就是提示内容或者图片不同,下面这个类是将提示内容和图片放到了自定义函 ...

  7. Android加载网络图片的工具类

    ImageView加载网络的图片 HttpUtil.java package com.eiice.httpuimagetils; import java.io.ByteArrayOutputStrea ...

  8. 转--Android中调用webservice的工具类

    最近学习WebService,感觉利用这个借口开发网站的Android客户端方便及了,用到一个工具类,这里铭记一下. public static final String WebServiceName ...

  9. Android之SharedPreferences两个工具类

    相信Android的这个最简单的存储方式大家都很熟悉了,但是有一个小小技巧,也许你没有用过,今天就跟大家分享一下,我们可以把SharedPreferences封装在一个工具类中,当我们需要写数据和读数 ...

随机推荐

  1. Linux中如何运行.AppImage文件

    今天在GitHub上发现了一个upterm( https://github.com/railsware/upterm )的开源项目,和其他的并不太一样,对于Linux发行版本只提供了AppImage的 ...

  2. java代码示例(3)

    /** * 需求分析:根据输入的天数是否是周六或是周日, * 并且天气的温度大于28摄氏度,则外出游泳,否则钓鱼 * @author chenyanlong * 日期:2017/10/14 */ pa ...

  3. Cleanup failed to process the following paths错误的解决

    在使用TortoiseSVN工具执行Cleanup操作时经常出现Cleanup failed to process the following paths的错误,具体如下图: 网上搜索了一下,找到了解 ...

  4. python---windows下安装和使用memcache

    windows版本下memcache地址http://www.runoob.com/memcached/window-install-memcached.html 注意当选择版本>=1.45时需 ...

  5. 把svn上的mycelipse导到本地的eclipse中【原】

    myeclipse和eclipse的web项目互导时会产生各种问题,现在把我遇到的情况记录如下: eclipse如何把svn上down下来的myeclipseWeb项目变成eclipse的Web项目: ...

  6. CentOS6.x网易163yum源配置

    一.备份原yum源 [root@yancy ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.$(d ...

  7. PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

    前言: 1.自己摸索安装 2.快速安装 安装这个扩展是由于Zephir 编译不能始终通过,迫不得已啊,使用Zephir写扩展,总是出现以下错误: www@ubuntu1:~/phalcon-zephi ...

  8. zabbix 源码分析 another/first network error wait for 15s seconds 出现原因及调优建议

    在监控设备的时候,在server端的日志中有时候会见到类似another network error, wait for 15s seconds的异常,今天我们看下这个问题的出现原因和解决方案: 问题 ...

  9. Oracle设置某张表为只读

    Oracle 11g开始支持设置某张表为只读,这样可以防范对某些表的修改,起到一定的安全性. 设置如下: --设置表为只读权限(加锁) ALTER TABLE tab_name READ ONLY ; ...

  10. [JLOI2015]装备购买 (高斯消元)

    [JLOI2015]装备购买 \(solution:\) 首先这道题的题面已经非常清晰的告诉我们这就是线性空间高斯消元的一道题(可以用某些装备来表示另一件装备,这已经不能再明显了),只是这道题要求我们 ...