• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • android 關于google劉海屏的解決方案

    標簽: android  linux  google  劉海屏  兼容

    轉載請標明出處:
    https://blog.csdn.net/DJY1992/article/details/80689308
    本文出自:【奧特曼超人的博客】

    推薦:

    目錄:

    劉海屏問題

    首先需要使用模擬器測試,最近 Google 也發布了 Android P 的模擬器,也可以找些真機云測的平臺,但是需要一點點費用,自己買一臺也是可以的,畢竟都是安卓開發。

    首先考慮的是如何兼容各大廠商的問題,首先歸總下:

    1. 谷歌google
    2. 小米xiaomi
    3. 華為huawei
    4. vivo
    5. oppo

    Google 解決方案Android P

    首先需要把SDK更新到Android P preview版本,然后使用 Android P 提供的模擬器,在開發者選項里找到 “Simulate a display with a cutout”,開啟劉海屏的支持,需要注意它們的區別,因為劉海屏是有多個版本的。
    劉海屏解決方案djy1992

    注意,尾部都是帶有cutout的,很多人不知道為什么,后面會講解。

    有了模擬器,接下來就解決代碼問題了:

    Google官方提供了三種模式:

    1.LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
    2.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
    3.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER

    官方對應的解釋:

    1. 僅僅當系統提供的bar完全包含了劉海區時才允許window擴展到劉海區,否則window不會和劉海區重疊
    2. 允許window擴展到劉海區
    3. 不允許window擴展到劉海區

    老碼農看到LAYOUT的時候應該可以想到它應該是屬于哪里的了,沒錯,就是屬于WindowManager的,老家伙出場,WindowManager的類型:WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER

    WindowManager.LayoutParams windowManagerDu = getWindow().getAttributes();  
    windowManagerDu.layoutInDisplayCutoutMode=WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER;  
    getWindow().setAttributes(windowManagerDu );

    之前很多人問為什么開發者模式都是cutout,其實就是cut的邊緣體,也就是layoutInDisplayCutoutMode,如果帶狀態欄的話需要判斷DisplayCutout

    DisplayCutout cutoutMode = getDisplayCutout();
    if(cutoutMode != null){
        WindowManager.LayoutParams windowManagerDu = getWindow().getAttributes();  
        windowManagerDu.layoutInDisplayCutoutMode=WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER;  
        getWindow().setAttributes(windowManagerDu );
    }

    這樣就設置了是否允許window擴展到劉海區的代碼,廠商的兼容度都是不一樣的,因為都是在谷歌出解決方案之前出的劉海屏,所以版本上的兼容要統一估計也沒那么快。


    其它廠商解決方案

    小米官方提供的解決方案

    目前已上市的小米 Notch 設備(俗稱劉海屏手機):小米8、小米8 SE、小米8 透明探索版
    由于內容較多,詳細請見另外篇:android兼容小米xiaomi劉海屏解決方案

    華為官方提供的解決方案

    由于內容較多,詳細請見另外篇:android 兼容huawei手機劉海屏解決方案

    vivo官方提供的解決方案

    由于內容較多,詳細請見另外篇:android 兼容vivo手機劉海屏解決方案

    oppo官方提供的解決方案

    由于內容較多,詳細請見另外篇:android兼容oppo手機劉海屏解決方案

    其它手機廠商

    暫時沒有發現,歡迎同學們多多投稿,也可加Q群投稿。

    版權聲明:本文為DJY1992原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/DJY1992/article/details/80689308

    智能推薦

    Android關于Theme.AppCompat相關問題的解決方案

    大家在eclipse上新建一個Android可能會遇到一個這樣的錯誤 對于這個錯誤,相信大部分Android開發者都遇到過,這里是一個解決方案 導入android-support-v7-appcompat庫,首先通過Android SDK Manager下載最新的Android Support Library。 下載完成之后,可以在以下目錄找到AppCompat library 不過現在很多都找不...

    Android Activity跳轉或finish時屏幕閃爍/短暫黑(白)屏的終極解決方案

    問題具體產生的原因自行百度,此文只談解決方案 Activity跳轉黑(白)屏幕 :SplashActivity跳轉GameActivity 主要是設置GameActivity的theme為透明的,先看見SplashActivity的畫面,等待GameActivity完全加載完畢后,才顯示游戲畫面。 注意點: 1、SplashActivity發起跳轉后,需要延遲幾秒在結束SplashActivity...

    android劉海屏之終極適配

    前言:作為安卓開發,也得承認蘋果設計一直在引領潮流,所以自從 iPhone X 發布之后,”劉海屏” 就一直被熱議,作為我自己必須先吐槽一下,真沒覺得劉海屏好看。但是作為苦逼的開發者,還是要必須去適配劉海屏的,自然而然的在吐槽完畢以后還是有了這篇文章的誕生。 那么什么是劉海屏呢? 在手機屏幕的正上方居中位置(下圖黑色區域)會被挖掉一個孔,屏幕被挖掉的區域無法正常顯示內容,這...

    Android 劉海屏適配全攻略

    0.版權聲明 本文由玉剛說寫作平臺提供寫作贊助,版權歸玉剛說微信公眾號所有 原作者:四月葡萄 版權聲明:未經玉剛說許可,不得以任何形式轉載 1.前言 先吐槽一下,劉海屏真丑。然而作為苦逼的開發者,還是要去適配劉海屏的。好了,吐槽完畢,進入正題。 這里主要是介紹一下Android P中劉海屏的適配以及Android P之前的適配。為什么要分開呢?因為Android P之前官方還沒提供API來進行適配...

    Android PopupWindow/懸浮窗適配劉海屏

    一、懸浮窗適配劉海屏 懸浮窗正常情況下,是不能移動到劉海屏所在的區域,那么你看到結果就是:類似這樣 如上圖所示,剛好是隔了一個劉海屏寬度的距離 要解決懸浮窗可以靠邊顯示到劉海屏所在區域,只要設置一下Flag那個參數為LayoutParams.FLAG_LAYOUT_NO_LIMITS即可,主要如下: 這個參數指明懸浮窗的位置不受系統屏幕邊界的限制,也就是可以移出屏幕,所以在懸浮窗的onTouch事...

    猜你喜歡

    數組刪除其中某個對象的方法

    數組刪除其中的對象或元素,在前端是比較常見的需求。 我現在比較常用的方法如下: 這種方法只適合刪除具有唯一標識的對象。 有沒有想要脫單的小伙伴,加入我們的脫單星球,認識更多優秀的小哥哥小姐姐 特此聲明,星球是免費的,但是創建星球的時候說是必須輸入金額,所以只能先私聊,我再加你免費加入!...

    圖床搭建以及圖床工具的使用

    為什么要用圖床和圖床工具? 比較下面三種md中的圖片url地址(均免費),你會使用哪一種? 選1?由于是本地路徑,文檔分享后給其他人打開后很可能顯示圖片加載失敗。 選2?雖然分享后可以顯示圖片,但能保證加載速度? 選3?我肯定選這種,即兼容2的瀏覽器訪問,又能保證訪問速度。 這樣就可以回答上面的問題了!保證瀏覽器訪問要用圖床,保證加載速度要用圖床工具,又不花錢想想就開心。 除此之外本篇博客還會講解...

    并發編程理論篇

    一、必備知識回顧 計算機又叫電腦,即通電的大腦,發明計算機是為了讓他通電之后能夠像人一樣去工作,并且它比人的工作效率更高,因為可以24小時不間斷 計算機五大組成部分 控制器 運算器 存儲器 輸入設備 輸出設備 計算機的核心真正干活的是CPU(控制器+運算器=中央處理器) 程序要想被計算機運行,它的代碼必須要先由硬盤讀到內存,之后cpu取指再執行 并發 看起來像同時運行的就可以稱之為并發 并行 真正...

    Java LinkedHashMap

    Java LinkedHashMap 前言 Map是我們在實際使用過程中常用的集合,HashMap在Java的實際開發中出鏡率很高,它通過hash算法實現了高效的非線程安全的集合,它有一個缺點就是,用戶插入集合的數據時無序,在我們需要一些有序的map的時候,我們就需要引入另外一個集合:LinkedHashMap。 LinkedHashMap是一個有序的非線程安全的集合,它是HashMap的子類,基...

    Spark Streaming處理文件(本地文件以及hdfs上面的文件)

    標題介紹文件流之前先介紹一下Dstream 下面是來自官網一段的說明,Discretized Streams或DStream是Spark Streaming提供的基本抽象。它表示連續的數據流,可以是從源接收的輸入數據流,也可以是通過轉換輸入流生成的已處理數據流。在內部,DStream由一系列連續的RDD表示,這是Spark對不可變的分布式數據集的抽象(有關更多詳細信息,請參見Spark編程指南)。...

    精品国产乱码久久久久久蜜桃不卡