[COCOS2DX-LUA]0-005.cocos2dx中關於全螢幕和摺疊螢幕的適配的一些見解

1.隨著科技的發展,我們可以看到從iphoneX的劉海屏開始,引發了各種全螢幕和異形屏的出現。這是科技的進步,但是對於各大的應用廠商來說,苦不堪言。

 

2.當然 ,吐槽歸吐槽,我們還是要理智的去對待這個事件的,因為我們要對我們應用的用戶負責,為我們的產品負責,為我們的money負責。

3.早在很久以前,當16:9,4:3, 3:2 等不同形狀的螢幕的時候,我們用了showAll和黑邊來適配我們的應用,但是由於影響美觀,我們走上了適配的道路,畢竟科技是進步的。

4.前期的適配,我們選取了16: 9為基礎的解析度,採用了fixedWith去固定寬度,因為那會兒都是寬屏,我們選取寬高比最大的來做基準解析度,那麼我們固定的內容區域,一定是能夠展示到螢幕內的,至於為什麼,你們可以把上面的比例轉換成一樣的,比如寬度48,那麼就是 48:27, 48:36, 48:32, 這樣就容易理解了。

5.那麼當全螢幕適配出來後,從寬屏到長屏,16:9 繼續發展為 18:9,16:9的fixedWidth明顯不夠顯示18:9的內容, 而且後續還會有20:9,21:9,讓我們吐血。

這個時候我不知道你們是怎麼適配的,我為了保證以前產品的穩定性,我就針對16:9以上比例的產品進行了FixedHeight,你可以用第四點的方法算下,16:9的用FixedHeight一定是最合適的,因為長度一直變長。

接著我會計算出相對應的螢幕偏移量,然後把產品內容按比例橫移,這個對於有canvas的creator就很棒了。我們手擼程式碼的絕對是噩夢,特別在產品矩陣巨大的情況下。

6.接下來談談摺疊螢幕。

 

 其實我們以上的2種螢幕適配方案,在這種手機上單獨打開都是可以適配的,唯一要調整的就是背景圖的大小。

7.但是問題來了,它要在你玩著遊戲的過程中切換螢幕的大小,那麼就是長屏和寬屏的切換,是不是哭暈廁所。GLview要實習切換,有的人說跟翻轉螢幕一樣做就行,但是,前提是你做了相對布局,以前也沒想過會有這種問題啊。

8.後來我思考了一個方案,反正都是顯示16:9的,那我就把layer設計成一個16:9的節點,其他精靈都防止在上面,背景圖也是在上面居中顯示。然後貼邊精靈用相對螢幕的距離進行適配。萬幸可以做,但是就是適配周期有點長。

9.大家對cocos適配有不同方案的可以回復里說說。