1. 程式人生 > >Unity快速適配安卓劉海屏(又簡單又快 適配了O版本和P版本)

Unity快速適配安卓劉海屏(又簡單又快 適配了O版本和P版本)

劉海屏適配,其實就是知道劉海高度(橫屏遊戲),來對ui進行偏移

所以劉海屏適配的關鍵是獲取劉海高度

       NotchFit是一款Android端的劉海屏適配庫,適配了O版本和P版本,它遮蔽了不同廠商不同裝置不同系統版本對劉海屏適配帶來的一系列的繁雜的問題。

     NotchFit可以智慧的判斷劉海的邏輯引數,所謂的劉海邏輯引數是該庫對裝置劉海蔘數的一個抽象獲取,劉海邏輯引數不單是獲取裝置的硬體引數,還會根據系統的設定(如小米、華為等手機可以在系統中控制劉海區域的使用與否)等條件判斷當前螢幕的統一的UI佈局狀態,檢查是否需要進行劉海適配。

下面是Github地址

https://github.com/wcl9900/NotchFit

下面是關於Unity使用NotchFit,分兩部分:NotchFit庫匯入和適配程式碼

安卓接入部分不懂可以看下面連結(最後獲取劉海高度用到的)

https://blog.csdn.net/SnoopyNa2Co3/article/details/85060577

已知問題:

1.關螢幕再開螢幕導致重啟問題https://blog.csdn.net/SnoopyNa2Co3/article/details/86215782

2.最近測試了android p版本的小米,在橫屏情況下p的劉海寬度相當於o的劉海寬度,這個要處理一下

我打包測試過資料和我預想的一樣,豎屏情況下返回的和安卓o版本資料一致

3.關於部分安卓第一次安裝完後開啟遊戲,點選home鍵後,點選圖示,遊戲重啟問題

https://blog.csdn.net/SnoopyNa2Co3/article/details/86309825

 

第一部分:匯入庫

1.先下載NotchFit然後解壓出來

2.開啟eclipse工程(我的工程基於上面安卓接入的工程)在工程下面右鍵->import

3.這裡找到剛剛解壓的NotchFit,然後勾選copy projects into workspace

匯入完成是這樣

Main是適配庫

MainActivity是個demo可以不看,可以不匯入

4.main工程報錯解決 把main的AndroidManifest圈住的刪掉

 

5.MainActivity報錯解決,先把styles刪掉

刪掉style之後AndroidManifest或報錯

然後把AndroidManifest圈住的刪掉

Ps:其實可以不匯入MainActivity這個專案

6.然後點選main工程右鍵Properties

先選個安卓版本,一定要最新的,然後把Is Library勾上

7.把main的java裡面的com資料夾拖到src資料夾

拖完之後如果發現報錯就快速修復,如下圖

8.最後匯入庫到工程裡面

右鍵屬性在Library新增上面main工程,順便也把工程使用最新的sdk

第二部分

寫獲取劉海尺寸,獲取到螢幕尺寸然後給回c#用

import com.wcl.notchfit.NotchFit;
import com.wcl.notchfit.args.NotchProperty;
import com.wcl.notchfit.args.NotchScreenType;
import com.wcl.notchfit.config.NotchConfig;
import com.wcl.notchfit.config.OnNotchPropertyListener;
import com.wcl.notchfit.core.OnNotchCallBack;
import com.wcl.notchfit.utils.LogUtils;
import com.wcl.notchfit.utils.SizeUtils;
        NotchFit.fit(this, NotchScreenType.FULL_SCREEN, new OnNotchCallBack() {
            public void onNotchReady(NotchProperty notchProperty) 
            {
                if(notchProperty.isNotchEnable())
                {
                    if(notchProperty.isNotchEnable())
                    {
                    	UnityPlayer.UnitySendMessage("ScreenMgr", "OnScreenAdapation", notchProperty.isNotchEnable() + "|" + notchProperty.getNotchWidth() + "|"+notchProperty.getNotchHeight());     
                    }
                }
            }
        });

程式碼寫完之後匯出jar包給unity使用,jar包匯出設定,只勾選src資料夾

導完之後直接打包apk測試

我這邊測試華為,小米,oppo劉海屏都會返回對應的劉海資料

下面是工程下載地址

連結:https://pan.baidu.com/s/1TcfyDinQPY2P4cUIelgn9w 
提取碼:t8i8