国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

一大波 Android 劉海屏來襲,全網全面適配技巧!

移動開發 Android
Apple 一直在引領設計的潮流,自從 iPhone X 發布之后,"劉海屏" 就一直存在爭議。不過不管你怎樣,Android 也要躋入 "劉海屏" 的行列,尤其是 Android P 發布之后,也從系統級支持頂部凹槽屏幕設計。

[[225814]]

 一、序

Hi,大家好,我是承香墨影!

Apple 一直在***設計的潮流,自從 iPhone X 發布之后,"劉海屏" 就一直存在爭議。不過不管你怎樣,Android 也要躋入 "劉海屏" 的行列,尤其是 Android P 發布之后,也從系統級支持頂部凹槽屏幕設計。

很多廠商也在逐漸推出 “劉海屏” 設計的手機,在國內比較常見的就是 OPPO x21 和 華為 P20。

屏幕不一樣了,迎來的就是一些適配上的問題。今天就來聊聊,Android 的 “劉海屏”,以及我們如何去適配它。

二、劉海屏的背景介紹

2.1 背景介紹

劉海屏的外觀,我想大家應該都有概念,不過不同廠商劉海屏的實現方式也有所不太,這一點需要先有個概念。

就現在市場上的情況來說,會區分成兩類,一類是標準的 Android P Api,另外一類就是廠商在 Android P 以下的系統,做的特殊適配。

例如:華為 P20 就是采用的 Android P 標準 Api 的方式,而 OPPO x21 就不一樣了,它有自己的適配 Api。

2.2 那些需要單獨適配

就算是增加了劉海屏,你也可以發現,大部分都是“切割”的狀態欄的區域,所以就面臨了三種情況。

  1. 有狀態欄的頁面,不會收到劉海屏的影響。
  2. 全屏未適配劉海屏的頁面,系統會對劉海屏區域進行切割,讓整體 UI 頁面做下移處理,避開劉海屏的顯示。
  3. 全屏已適配劉海屏的頁面,可以兼容劉海屏,做到真正的全屏顯示。

后面會單獨講解這幾種方式的區別。

2.3 搶先體驗 Android P

在手邊沒有對應系統的設備的時候,模擬器是一條不錯的路,最近 Google 也發布了 Android P 的模擬器,還有一個辦法就是找一些支持真機云測的平臺,租用一臺需要的遠程設備,也是一個解決方案。

我這里選擇 Android P 的模擬器,有需要自己更新 SDK ,無腦下載更新就好。

劉海的凹槽區域,大部分是為了給攝像頭或者其他傳感器留出區域。而在沒有劉海的設備或者模擬器上,可以通過開發者選項里的 “Simulate a display with a cutout”,開啟劉海屏的支持。

如果你把所有的模式都試過一遍,你會發現,其實劉海屏的劉海,在 Android P 上,是有多種樣式的,并非統一的。

2.4 劉海屏的適配

2.2 也講清楚了,劉海屏的切割區域,都存在于狀態欄上,所以在有狀態欄的頁面上,是無需我們特殊處理的,系統會幫我們處理好。

而對于全屏的頁面,就需要單獨的處理了。我這里,簡單做了一個全屏頁面,每個橫條都是等寬的這樣能看到布局上的差異。

從左至右分別是:關閉劉海屏、開啟劉海屏但不支持、適配劉海屏。

一個全屏的頁面,當沒有支持劉海屏又碰到了劉海屏,會導致 UI 下沉,如果這不是一個列表的布局,底部的控件就會被遮擋。

例如下面這樣的情況:

圖片來自:華為適配指南

還有一些被劉海遮擋區域的效果,其實主要是依賴 UI 設計師來規避了,不要在可能出現劉海切割的地方,設計可操作的區域,影響用戶操作。

三、技術適配劉海屏

說那么多,最終我們還是需要用技術的方式來適配劉海屏。Android P 的劉海屏,是有標準的 Api 來進行適配,而對于一些廠商自己的劉海屏設備,例如:OPPO x21,就需要遵循它的開發文檔進行單獨適配。

Android P 為***的劉海屏,提供了專門的 Api 來支持:DisplayCutout。

3.1 開啟劉海屏

我們在全屏的頁面,需要單獨開啟支持劉海屏。而 Google 提供的適配方案,可以設置是否在全屏模式下,使用劉海屏的區域。

  1. WindowManager.LayoutParams lp 
  2.                 =getWindow().getAttributes(); 
  3. lp.layoutInDisplayCutoutMode = 
  4.                 WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; 
  5. getWindow().setAttributes(lp); 

新的布局屬性 layoutInDisplayCutoutMode 包含三種可選的模式,

  1. public static final int LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS = 1; 
  2. public static final int LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT = 0; 
  3. public static final int LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER = 2; 

3.2 劉海屏的高度

在全屏模式下,我們需要有辦法獲取到劉海屏凹槽的高度,才可以做到設計和布局的時候,留出安全距離。

雖然 Google 要求,劉海屏的凹槽,必須和劉海的高度保持一致,而劉海屏又被隱藏在狀態欄了,所以有一個思路是直接獲取狀態欄的高度,來判斷劉海之外,可布局的安全區域。

不過 Android P 已經預留出了標準的測量 劉海屏凹槽 的 Api:DisplayCutout。

劉海屏的凹槽,就在屏幕的中間,所以只有 getSafeInsetTop() 方法返回的結果,是我們需要的,而其他的 getSafeInsetXxx() 方法,直接返回的是 0 。

  1. view.postDelayed(new Runnable() { 
  2.     @Override 
  3.     public void run() { 
  4.         DisplayCutout displayCutout = view.getRootWindowInsets().getDisplayCutout(); 
  5.         Log.i("cxmyDev""SafeInsetBottom:" + displayCutout.getSafeInsetBottom()); 
  6.         Log.i("cxmyDev""SafeInsetLeft:" + displayCutout.getSafeInsetLeft()); 
  7.         Log.i("cxmyDev""SafeInsetRight:" + displayCutout.getSafeInsetRight()); 
  8.         Log.i("cxmyDev""SafeInsetTop:" + displayCutout.getSafeInsetTop()); 
  9.     } 
  10. }, 100); 

得到的結果,也可以看一下:

  1. I/cxmyDev: SafeInsetBottom:0 
  2. I/cxmyDev: SafeInsetLeft:0 
  3. I/cxmyDev: SafeInsetRight:0 
  4. I/cxmyDev: SafeInsetTop:112 

3.3 非標準 Api

像 OPPO 這樣的廠商,實現劉海屏的方式,也并不是按照 Android P 的標準做的,它完全是自己修改了劉海屏的實現方式。不過好在,都是會提供完備的適配文檔,這就需要我們直接閱讀他們提供的開發文檔來進行適配。

oppo 的劉海屏適配文檔:

  • https://open.oppomobile.com/wiki/doc#id=10139

對于 OPPO 而言,它劉海的高度是固定的,就是 80px。

判斷當前設備是否是劉海屏,也提供了對應的 Api,可以用以下方法獲取。

  1. context.getPackageManager().hasSystemFeature(“com.oppo.feature.screen.heteromorphism”) 

返回 true 為劉海屏,但是這種方法只能識別 OPPO 品牌所支持的劉海屏。

四、結語

看完本篇文章,我想你對 Android 的劉海屏也有一定的認識了。這是一個全新的適配技術,現在還不確定不同廠商會不會對其微調,所以你要是碰到什么問題,不妨在留言區留言討論。

【本文為51CTO專欄作者“張旸”的原創稿件,轉載請通過微信公眾號聯系作者獲取授權】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2015-08-03 11:50:18

灌水動畫

2015-10-15 11:15:32

阿里云云棲大會云計算

2015-05-19 13:58:50

iPhone

2018-03-08 10:24:43

蘋果劉海屏安卓

2024-06-13 09:02:30

2025-06-27 08:45:43

2024-04-10 12:42:51

AI模型

2020-04-24 12:48:01

新基建物聯網IOT

2021-12-20 09:47:20

TailwindCSS前端開發

2016-03-11 18:44:32

2020-02-24 09:45:06

WindowsWindows 10微軟

2023-11-15 20:51:18

TypeScript前端

2023-07-06 16:41:55

iOS 17蘋果

2014-12-11 10:28:48

Ucloud

2017-09-07 10:07:07

酷睿筆記本英特爾

2015-04-23 20:56:22

Unity

2017-01-12 20:29:19

存儲術語DevOps

2017-09-04 14:23:14

英特爾筆記本酷睿處理器
點贊
收藏

51CTO技術棧公眾號

亚洲精品午夜| 妞干网在线免费视频| 亚洲美女主播视频免费观看| 亚洲图片自拍偷拍| 91精品国产91热久久久做人人| 国产精品久久久久影院日本| 99精品美女| 亚洲图片一区二区| 亚洲欧美久久久久| 91麻豆123| 欧洲金发美女大战黑人| 蜜桃视频一区二区三区在线观看| 亚洲va久久久噜噜噜久久天堂| 日韩成人av在线资源| 欧美福利视频在线观看| 日韩高清一区| 久久久影视精品| 风间由美一区二区av101| 欧美裸身视频免费观看| 国产成人毛片| 久久精品国产亚洲一区二区| 亚洲成av在线| 中文字幕自拍vr一区二区三区| 成人久久网站| 色综合久久88| 最新精品国偷自产在线| 国产99久久精品一区二区永久免费 | av资源一区二区| 黄色片网站在线| 亚洲特黄一级片| 欧美日韩在线免费观看视频| 欧美激情无毛| 久久久久久91| 牛牛精品视频在线| 欧美激情一二三区| 精品久久久久久久免费人妻| 亚洲最好看的视频| 中文字幕制服丝袜一区二区三区 | 日本免费在线观看| 国产精品乡下勾搭老头1| 伊人伊成久久人综合网小说| 丝袜美腿av在线| 91精品国产综合久久香蕉麻豆| 伊人影院综合在线| 成人av网站在线| 91精品国产一区二区人妖| 97在线看免费观看视频在线观看| 国产一区二区三区精品在线观看| 欧美成人第一页| 要久久爱电视剧全集完整观看| 国产精品毛片a∨一区二区三区|国| 午夜国产一区| 视频三区二区一区| 99久久久久免费精品国产| 妺妺窝人体色www在线小说| 国产精品初高中害羞小美女文| ga∨成人网| 欧美日韩国产一二三| gay欧美网站| 91国语精品自产拍在线观看性色| 欧美不卡一区| 亚洲熟妇无码av在线播放| 自拍av一区二区三区| 国产黄色在线观看| 两个人的视频www国产精品| 精品国产一区二区三区久久久蜜臀| 精品无人区一区二区三区 | 簧片在线观看| 欧美大黄免费观看| 国内毛片久久| 蜜桃av久久久亚洲精品| 91视视频在线直接观看在线看网页在线看 | 国产精品福利网| 免费欧美日韩| wwwwww.色| 在线精品观看国产| 亚洲色图图片| 国产乱码精品一区二区三区中文 | 在线成人性视频| 成人免费视频国产在线观看| 四虎最新地址发布| 欧美在线不卡视频| 电影中文字幕一区二区| 欧美精品久久久| 夜夜夜精品看看| 国产综合av| 久久综合婷婷综合| k8久久久一区二区三区 | 精品视频9999| 色偷偷偷在线视频播放| 中文字幕人成不卡一区| 黄a大片av永久免费| 一道本成人在线| 一区二区三区四区日本视频| 精品人伦一区二区色婷婷| 成人亚洲精品| 1769视频在线播放免费观看| 国产精品国产福利国产秒拍| 国产精品福利在线观看播放| 91精品久久久久久| 久久久久久97三级| 成人免费淫片免费观看| 在线观看三级视频欧美| 精品精品精品| 最近2019年中文视频免费在线观看 | 亚洲日本一区二区三区| 国产三级在线播放| 97视频免费在线观看| 久久激情中文| 天天看片激情网站| 精品国产91洋老外米糕| 伊人久久亚洲热| 97在线观看播放| 亚洲偷熟乱区亚洲香蕉av| 亚洲性视频h| 国产九色porn网址| 日韩在线观看高清| 天堂在线一区二区| 成人av免费| 成人免费看片视频| 日本一区二区三区视频视频| av中文资源在线资源免费观看| 琪琪第一精品导航| 国产精品白丝jk黑袜喷水| a视频网址在线观看| 国产成人高清激情视频在线观看| www.66久久| 女海盗2成人h版中文字幕| 国产在线精品一区二区三区| 亚洲国产精品久久久男人的天堂| 99精品美女视频在线观看热舞| 日韩视频在线播放| 91福利精品视频| 婷婷精品进入| 黄色春季福利在线看| 欧美区二区三区| 粉嫩aⅴ一区二区三区四区| 在线观看a级片| 丁香婷婷久久久综合精品国产| 亚洲福利视频一区| 日韩在线观看一区| 久草福利资源在线视频| 57pao国产精品一区| 国产精品美女久久久久久久久| 国产在线一区不卡| 欧美日韩亚洲第一| 大胆人体色综合| 久久久久久久久97黄色工厂| 在线观看欧美日本| 亚洲精品视频免费看| 99热免费精品| 精品在线视频一区二区| 亚洲精品国模| 精品免费视频| 里番在线播放| 精品欧美乱码久久久久久 | www.99av.com| 日韩在线视频二区| 免费av一区| 在线成人av观看| av网站免费| 欧美连裤袜在线视频| 91国偷自产一区二区开放时间| 国产精品色网| 99a精品视频在线观看| 成人高清免费在线播放| 欧美 日韩 亚洲 一区| 国产精品初高中精品久久| 欧美精品一区二区精品网| 欧美激情一区二区三区全黄| aa级大片欧美三级| 亚洲无线观看| 粗大黑人巨茎大战欧美成人| 麻豆一区二区三区在线观看| 亚洲精品一区二区三区不| 亚洲免费影视| 惠美惠精品网| yourporn在线观看中文站| 白浆爆出在线观看| 毛片av免费在线观看| 国产精品影院在线观看| 亚洲天堂2020| 欧美亚洲综合在线| 国产精品黄视频| 久久中文字幕国产| 韩日欧美一区二区三区| 一根才成人网| 欧美亚洲伦理www| 午夜精品视频网站| 亚洲成人网在线观看| 欧美日韩中文字幕一区二区| 欧美日韩欧美一区二区| 国产嫩草在线观看| 国产成人精品电影| 欧美日韩国产综合一区二区三区| 三级久久三级久久久| 自由日本语热亚洲人| 午夜大尺度福利视频| 国产精品亚洲不卡a| 中文字幕成人精品久久不卡|