日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 系統 > Android > 正文

詳解Android 華為凹口屏適配小結

2019-10-21 21:25:13
字體:
來源:轉載
供稿:網友

Android8.0以后【凹口屏】得到迅速發展,目前已有了挖孔屏/水滴屏/劉海屏等各式各樣的屏幕,究其根本依舊是【凹口屏】,單華為一個品牌就涵蓋了基本所有類型,而對于屏幕適配也是不可逃避的問題。小菜單獨對華為各型號屏幕進行適配嘗試,部分方法可通用到其他品牌設備,為 Android 標準 SDK 方法。

其實凹口屏已經出現很久了,對于獲取凹口寬高的方式也有很多種,但是以前主流的凹口屏中凹口位置一般是位于屏幕正上方,但隨著發展,也出現了在左上角的挖孔屏樣式。相應的, Android 9.0 即 SDK28 也發布了獲取凹口屏的方法。

Android 9.0 以下適配方案

對華為設備凹口屏適配情況來說,若僅需獲取凹口位置的寬高,如下方法即可,在 Android 各版本中均可( Android 9.0 及以上亦可)。此時獲取屏幕水平方向安全位置時,可根據屏幕寬度-凹口寬度再左右均分即可。

/** * 華為凹口屏判斷方法 Android 各版本均可 * @param context * @return */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(TAG, "hasNotchInScreen ClassNotFoundException");  } catch (NoSuchMethodException e) {    Log.e(TAG, "hasNotchInScreen NoSuchMethodException");  } catch (Exception e) {    Log.e(TAG, "hasNotchInScreen Exception");  } finally {    return ret;  }}/** * 華為凹口屏寬高獲取方式 int[]{width, height} * @param context * @return */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(TAG, "getNotchSize ClassNotFoundException");  } catch (NoSuchMethodException e) {    Log.e(TAG, "getNotchSize NoSuchMethodException");  } catch (Exception e) {    Log.e(TAG, "getNotchSize Exception");  } finally {    notchWidth = ret[0];    notchHeight = ret[1];    return ret;  }}

Android,凹口屏,適配

Android,凹口屏,適配

Android 9.0 及以上適配

對于華為新出的挖孔屏設備基本均為 Android 9.0 及以上, Android 9.0 提供了對凹口屏相關的 SDK ,谷歌認為凹口位置可以不固定位置也不固定個數,但是對于設備一條邊只能有一個;如下方法對于 Android 9.0 及以上設備判斷均可。 SDK 不僅可以判斷是否為凹口屏,同時可以獲取各個凹口大小及所在位置。

步驟如下: 升級 build.gradle 中 compileSdkVersion 或 targetSdkVersion 為 28 ; 在 Application 或 Activity 中設置 meta-data 屬性,小菜測試不設置亦可;

<meta-data android:name="android.notch_support" android:value="true"/>

根據如下方法獲取相應參數;

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {  getSupportActionBar().hide();  getWindow().getDecorView()    .setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);  //設置頁面全屏顯示  WindowManager.LayoutParams lp = getWindow().getAttributes();  lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;  //設置頁面延伸到凹口區顯示  getWindow().setAttributes(lp);  getWindow().getDecorView()    .findViewById(android.R.id.content)    .getRootView()    .setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() {      @Override      public WindowInsets onApplyWindowInsets(View view, WindowInsets windowInsets) {        DisplayCutout cutout = windowInsets.getDisplayCutout();        if (cutout == null) {          Log.e(TAG, "cutout==null, is not notch screen");//通過cutout是否為null判斷是否凹口手機          isNotchScreen = false;        } else {          List<Rect> rects = cutout.getBoundingRects();          if (rects == null || rects.size() == 0) {            Log.e(TAG, "rects==null || rects.size()==0, is not notch screen");            isNotchScreen = true;          } else {            Log.e(TAG, "rect size:" + rects.size());//注意:凹口的數量可以是多個            isNotchScreen = true;            for (Rect rect : rects) {              notchRight = rect.right;              notchLeft = rect.left;              notchTop = rect.top;              notchBottom = rect.bottom;              notchWidth = notchRight - notchLeft;              notchHeight = notchBottom - notchLeft;              safeLeft = cutout.getSafeInsetLeft();              safeRight = cutout.getSafeInsetRight();              safeTop = cutout.getSafeInsetTop();              safeBottom = cutout.getSafeInsetBottom();            }          }        }        return windowInsets;      }    });}

Android,凹口屏,適配

Android,凹口屏,適配

Android,凹口屏,適配

Android,凹口屏,適配

注意事項: 小菜在設置 Application 或 Activity 的主題為 NoActionBar 樣式,此時要去掉 getSupportActionBar().hide(); 否則會報空指針異常;

<style name="NoBarTheme" parent="Theme.AppCompat.NoActionBar"> <item name="android:windowNoTitle">true</item> <item name="android:windowContentOverlay">@null</item></style>

如下設置全屏使用凹口屏時要注意 View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN ,否則參數很有可能獲取不到;

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);WindowManager.LayoutParams lp = getWindow().getAttributes();lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;getWindow().setAttributes(lp);

設置主題 NoActionBar 或代碼中動態設置 getSupportActionBar().hide(); 展示效果在 Android 9.0 以下有部分差異,如下:

Android,凹口屏,適配

NoActionBar 主題

Android,凹口屏,適配

AppTheme 主題

對于凹口屏適配還有很多機型要單獨處理,以上僅對華為設備進行參考;如果有不對的地方還希望多多指出。也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
欧美日韩三级在线| 一区二区不卡在线| 91精品国产调教在线观看| 欧美久久在线| 日韩午夜黄色| 亚洲欧洲综合另类| 国产视频aaa| 亚洲女人天堂a在线播放| 黄色片网站在线| 亚洲一二三不卡| 日韩视频不卡中文| 精品中文字幕在线播放| 国内精品露脸在线视频播放| 日韩欧美亚洲国产| 欧美日韩中文字幕一区| av免费在线播放| 天堂在线中文资源| 久久中文免费视频| 91精品综合久久久久久| 国产福利久久久| 在线观看中文字幕一区| 欧美国产中文| 欧美1234区| 91精品国产日韩91久久久久久| 国产在线高潮| 国产日韩免费| 91精品国产综合久久精品| 欧美日韩中文在线| 国产裸舞福利在线视频合集| 欧美日韩视频网站| 亚洲va韩国va欧美va精品| 日韩精品在线网站| 欧美日韩视频网站| 亚洲成年网站在线观看| 日韩av一区二区在线| 欧美国产三级| 国产成人综合av| www.尤物.com| 日韩在线视频观看正片免费网站| 久久香蕉精品| 最近中文字幕日韩精品| 国产xxx在线| 中文字幕欧美日韩| 99综合精品久久| 欧美一级久久久久久久久大| 精品久久人人做人人爽| 精品全国在线一区二区| va中文字幕| 免费视频久久| 粉嫩粉嫩芽的虎白女18在线视频| 免费在线观看国产黄| 中文字幕欧美日韩在线| 欧美日韩高清| 国产v日产∨综合v精品视频| 日韩不卡一区二区| 亚洲综合在线中文字幕| 欧美日韩午夜在线视频| 精品视频资源站| 伊人www22综合色| 欧美日韩精品综合在线| 日韩欧美三级视频| 日韩欧美一二三四区| wwwww亚洲| 欧美日韩激情一区| 在线免费播放av| 天堂中文在线视频| 亚洲一区中文| 国产激情在线视频| 蜜桃久久av一区| 日韩视频在线免费播放| 91精品国产自产在线丝袜啪| 又黄又www的网站| 91欧美日韩| 亚洲高清视频一区| 国产在线日韩欧美| 在线一区二区不卡| 日韩欧美一二三四区| 欧美色欧美亚洲高清在线视频| 日韩精品在线免费播放| 日韩欧美亚洲视频| 欧美亚洲免费高清在线观看| 中文字幕无线码一区| 蜜臀91精品国产高清在线观看| 国产成人精品999在线观看| 中文字幕在线观看国产| 欧美三级网址| 国产黄色在线播放| 久久网站免费观看| 1区2区3区在线视频| 亚洲日产av中文字幕| 久久久久久久久综合| 欧美日韩在线第一页| 国产成人综合av| 日韩欧美国产成人一区二区| 欧美三级免费观看| 国产一级在线免费观看| 最新中文在线视频| 亚洲欧美小说国产图片| 国产超级va在线视频| 中文字幕欧美亚洲| 日韩欧美国产网站| 91久久精品国产91性色69| 中文字幕在线观看国产| √天堂资源中文www| 日韩三级免费观看| 中文精品在线| 日韩欧美在线1卡| 区日韩二区欧美三区| 欧美日韩精品欧美日韩精品| 欧美日韩亚洲一区| 久久欧美中文字幕| 欧美成人精品在线| 亚洲欧洲在线观看av| 日韩字幕在线观看| 欧美日韩国产亚洲一区| 中文字幕第一页在线播放| 一区二区三区在线播放欧美| 国产不卡的av| 午夜高潮免费视频| 中文字幕日韩在线观看| 国产三级第一页| 中文字幕亚洲欧美| 在线观看国产福利视频| 亚洲欧美日本另类| 国产不卡在线| 日韩欧美亚洲区| 精品久久香蕉国产线看观看gif| 欧美日韩中国免费专区在线看| 欧美日韩亚洲一区| 精品久久久网| 欧美日韩一级黄| 欧美日韩国产观看视频| 亚洲福利一区| 国产福利第一页| 精品国产乱码久久久久久蜜臀| 国产日韩在线亚洲字幕中文| 欧美日韩亚洲国内综合网俺| 国产丝袜一区| 欧美片网站免费| 日韩国产亚洲欧美| 日韩欧美高清在线| 91国内精品在线视频| 中文字幕 乱码 中文乱码91| 日韩在线欧美| 国产一区免费视频| 亚洲羞羞网站| 玖玖在线免费视频| 午夜精品免费视频| 在线观看91精品国产入口| 国产卡1卡2卡三卡在线| 欧美三级日韩三级| 极品久久久久久| av午夜在线| wwwav在线播放| 精品熟女一区二区三区| 在线国产99| 欧美熟妇乱码在线一区| 91精品国产自产| 亚洲高清中文字幕| 国产极品嫩模在线视频一区| 精品免费久久久| 国产99精品| 一区二区三区在线|网站| 国产偷久久久精品专区| 久草视频观看| av影视在线看| 欧美激情一区二区三区在线| 日韩欧美国产高清| 亚洲区中文字幕| 中文字幕亚洲欧美| 91久久精品午夜一区二区| 日韩欧美久久| 中文字幕最新精品| 欧美日韩在线播放视频| 亚洲成年人在线播放| 国产日韩免费| www..com日韩| 欧美日韩国产第一页| 日韩精品在线免费观看视频| 亚洲成a人片在线www| 精品一二线国产| 在线观看一区日韩| 亚洲va韩国va欧美va精品| 亚洲综合在线不卡| 日韩中文在线字幕| 成人久久在线| 日韩欧美一卡二卡| 久久91精品久久久久久秒播| 国产欧美综合视频| 中文在线一区| 日韩在线观看视频一区二区| 欧美婷婷久久| a级在线免费观看| 另类专区欧美| 欧美日韩在线不卡| 中文字幕欧美在线| 国产劲爆久久| 中文字幕亚洲第一| 亚洲一级影院| 阿v免费在线观看| 精品人妻一区二区免费视频 | 国产高清精品二区| 亚洲素人一区二区| 久久香蕉精品| 亚洲成人7777| 日韩欧美国产高清| 91最新在线| 日韩三级精品电影久久久| 欧美日韩国产在线播放| 中文字幕精品在线| 日韩午夜中文字幕| 精品久久久久久无| 日韩视频在线观看视频| 日韩在线视频网| 日韩欧美中文视频| 五月综合激情日本mⅴ| 在线一区av| 日韩中文在线视频| 久草视频观看| 日韩国产成人| 亚洲综合在线视频| 中文字幕国产亚洲| 国内精品不卡| 日韩精品在线观看视频| 国产香蕉精品视频| 日韩欧美国产片| 国产香蕉免费精品视频| 精品婷婷伊人一区三区三| 日韩视频 中文字幕| 亚洲成年人在线播放| 国产在线第一页| 国产黄色在线看| 国产欧美日韩中文久久| 亚洲综合视频一区| 日韩精品a在线观看91| 亚洲中文字幕一区| 国产不卡一区二区在线观看| 国产视频一区三区| 亚洲欧美视频一区二区三区| 一二三区精品视频| 一本一道久久a久久精品综合蜜臀| 日韩影院二区| 蜜桃精品视频| 日韩精品第一区| 美女尤物久久精品| 在线视频国内一区二区| 深夜福利一区| 久久久91精品| av一区在线| 日韩精品视频在线观看网址| 国产卡1卡2卡三卡在线| 色综合天天性综合| 91精品综合久久| 国产精品一区二区三区免费观看| 国产一区三区三区| 欧美片网站免费| 精品人妻二区中文字幕| 日韩三级视频在线| av不卡免费看| 国产黄色片中文字幕| 亚洲免费专区| 国产婷婷精品| 日韩中文字幕视频网| 久久99精品久久久| 国产999精品在线观看| 精品乱人伦一区二区三区| 日韩欧美一二三| 日韩在线二区| 国产免费久久久| 国产丝袜一区二区| 欧美.日韩.国产.一区.二区| 中文字幕亚洲在| 日韩欧美国产片| 国产一级一片免费播放| 中文天堂在线一区| 亚洲一区在线观看视频| 亚洲一区日韩在线| 精品日韩欧美在线| 中文字幕精品一区二| 一级片在线播放| 最近中文字幕在线中文视频| 久草视频观看| 国产91欧美| 久久中文精品| 日韩久久久精品| 成人一区二区不卡免费| 日韩精品在线中文字幕| 欧美日韩免费精品| 久久夜色精品国产噜噜亚洲av| 国产成人精品999在线观看| 国产欧美日韩综合| 亚洲永久免费视频| 日韩 欧美 中文| 日韩中文字幕| 一区三区二区视频| 51精品免费网站| 久久精品人妻一区二区三区| 欧美日韩亚洲综合在线| 99精品人妻国产毛片| 欧美日韩国产首页在线观看| 在线一区免费| 最新日韩中文字幕| 国产嫩草影院久久久久| 韩国av一区二区| 日韩欧美中文字幕在线观看| 一区二区视频在线观看免费的| 久久99蜜桃精品久久久久小说| 最新中文字幕在线播放| 精品成人久久久| 麻豆精品视频入口| 精品一二三区| 91精品国产乱码久久蜜臀| 91精品久久久久久久久久入口| 国产成人日日夜夜| 欧美日韩在线播放一区| 亚洲国产欧美日韩精品| 日韩欧美一级二级三级久久久| 日韩色在线观看| 一区二区不卡视频在线观看| 91精品xxx在线观看| 欧美日韩日本视频| 午夜高潮免费视频| 中文 欧美 日韩| 国产欧美三级| 日韩免费不卡avV| 日韩欧美国产成人精品免费| 精品九九久久| 国产欧美久久久| 日韩精品在线免费观看| www..com日韩| 日本精品国语自产拍在线观看| 国产欧美综合视频| 精品调教chinesegay| 日韩欧美久久| 久久精品免费看| 国产在线导航| 国产高清精品二区| 欧洲精品二区| 激情婷婷亚洲| 黄色在线播放网站| 日韩视频精品在线观看| 精品国产99| 中文字幕在线精品| 日韩欧美国产视频| 国产日韩中文在线| 日韩视频一区| 日韩不卡中文字幕| 国产拍揄自揄精品视频麻豆| 欧美日韩国产页| 伊人中文字幕在线观看| 欧美熟妇乱码在线一区| 亚洲欧美视频一区二区三区| 国产视频二区| 综合图区亚洲白拍在线 | 日本a口亚洲| 国产 欧美在线| 欧美日韩中文字幕综合视频| 中文字幕亚洲一区在线观看| 国产在线黄色| 欧美另类久久久品| 91久久精品国产91性色69| 国产乱码午夜在线视频| 亚洲乱码一区av黑人高潮| 99精品视频99| 国产丝袜欧美中文另类| 欧美在线视频二区| 国产日韩专区| 亚洲第一视频网站| 国精品产品一区| 亚洲免费福利视频| 亚洲成av人片在线| 国产欧美中文字幕| 国产视频1区| 国内精品99| 中文天堂在线一区| 国产欧亚日韩视频| 欧美日韩精品免费在线观看视频| 一区二区三区在线|网站| 中文字幕日韩在线视频| 午夜亚洲福利| 中文字幕在线观看精品| 国产传媒久久久| 中文字幕 日韩 欧美| 欧美日韩一二| 欧美三级中文字幕| 视频一区二区不卡| 91精品国产综合久久精品app| 蜜臀91精品国产高清在线观看| 亚洲黄色在线观看| 91精品国产91久久| 中文字幕欧美日韩在线| 白嫩少妇丰满一区二区| 中文字幕在线观看亚洲| 国产视频二区| 久久99久久久欧美国产| 精品不卡一区二区| 国产欧美日韩不卡| 91久久精品网| 中文字幕国产亚洲| 7799精品视频天天看|