關於Android引導畫面的多解析度適配

2021-06-22 20:42:54 字數 3073 閱讀 4643

本文並非關於引導畫面該採用何種形式、該如何定義資訊、有什麼注意事項方面的介紹。

本文描述的是,引導畫面該如何才能較好的適配各種解析度,了解此處有助於更好的定義引導畫面,以及保持同設計師、工程師的良好溝通。

作為產品人員,需要向不同方向延伸了解一些知識,這些知識能讓溝通更順暢。

這些所了解的知識,可能會有一些錯誤,當發現問題時,隨時更新自己的知識體系。

類似下圖,乙個引導畫面是一屏,左右拖動來切換

圖1:有道雲筆記android 1.2.0引導畫面

圖2:有道雲筆記android 2.0.0引導畫面

需要知道的是,同一dpi的裝置也有不同的解析度,比如hdpi最常見的就有480×800和480×854的解析度,還有其他的,比如480×640、600×1024….

因此,想對不同dpi做一種解析度的方法,會存在問題。

我嘗試用圖來說明一下一張,如果不做處理在不同機器和不同解析度上的顯示樣式:

以galaxy nexus為例,螢幕解析度為720×1280,狀態列為50px,下方虛擬鍵盤欄為96px,所以實際中間大小為720×1134

2.1 在不同解析度下的顯示樣式

讓我們模擬下此720×1134的引導圖在720×1280解析度的裝置上的顯示樣式如下圖:

圖a:720×1134的引導圖在720×1280裝置的顯示樣式

當我們在一台480×800解析度的裝置上顯示時,會縮小為480px的寬度顯示,此時高度對應會等比縮小為756px顯示,假設此時狀態列標準高度為38px,則會空餘16px的空間。如果我們設定背景顏色為紅色,則此時顯示狀態如下圖:

圖b:720×1134的引導圖在480×800裝置的顯示樣式

同理,當我們在一台320×480解析度的裝置上顯示時,假設此時狀態列標準高度為25px,等比縮放後,會縮小為455px(480-25)的高度顯示,此時寬度對應會等比縮小為289px顯示,則會空餘31px的空間。如果我們設定背景顏色為紅色,則此時顯示狀態如下圖:

圖c:720×1134的引導圖在320×480裝置的顯示樣式

不再繼續多舉例了。

2.2 適配方案

從上述的例子來看,大圖自動縮放後,最大的問題是上下、或左右會留出一些無法填充的位置。

所以,在邊緣為純色的情況下,我們只需要將背景填充為和邊緣顏色一樣的色值即可。

而且,我們只需要準備較大解析度的一套,這樣可以更好的保證在不同解析度裝置上的效果。

2.3 缺陷

下圖是在240×320的ldpi裝置上的顯示效果,如果仔細看,可以看到左右兩側豎向的顏色和中間部分的顏色有一些不一致。

原因還不確定,暫時未有明確結論,猜測可能和android的影象縮小顯示機制有關係。

3.4 示例

(1)  有道雲筆記android 2.0.0的引導畫面切圖

(2)  android 2.0.0中的適配

√  的周邊保證是純色的,這樣才能有效的進行不同解析度的適配。

√  指定了720×1280的機器為標準參照裝置,切出去除了虛擬鍵盤和狀態列的部分

√  設定引導介面的背景色為和邊緣色一致的顏色

3.1 適配方案

前提:

√  為了保證四邊的縮放效果,邊緣需要設定為純色。

√  為保證縮放效果,採用xhdpi的素材來做9-patch的原始

適配:

√  在draw 9-patch中,設定頂部的左側和右側乙個畫素為拉伸區域,設定右側的頂部和底部乙個畫素為拉伸區域。

結果:

√  類似實現方式一的影象示例,只是適配中出現的紅色部分,會因為設定了拉伸區域而自動用設定的拉伸區域去填充,從而達到適配效果

3.2 缺陷

目前發現當較大時,9-patch的縮放會出現問題,未能按照預期縮放。

3.3 示例

有道雲筆記android 1.2.0的引導畫面採用9-patch的方式實現,見圖1

4.1 適配方案

√  提供背景透明的引導圖

√  提供背景的色值

√  填充背景色,並放置背景透明的引導圖

4.2 缺陷

png的圖會比jpg的圖大一些

五、小結

方式三是目前傾向採用的方式,本文如有進一步的實踐資訊,再予以補充。

上述描述和理解中,可能存在錯誤和問題,如有不當,敬請指出。  

Android開機畫面的修改

android 2.1 開機畫面的修改 在emb9g45開發板上進行android系統的移植,一共有三屏開機畫面,為了使開機畫面更加的個性化,我進行了開機畫面的修改 開機第一屏畫面的修改 1 選張自己喜歡的png格式的,如圖。命名為logo.png 輸入命令 pngtopnm logo.png lo...

關於android新手引導的開源使用

先放一張效果的吧。雖然醜了點,講究實用吧。新增蒙層上需要顯示的文字等效果 guide builder.createguide guide.setshouldchecklocinwindow true guide.show this 關鍵 就是這個樣子的,針對的是某乙個控制項的新手引導的使用。crea...

關於OkHttp方面的Android面試題

最近好多學生出去面試都或多或少的問到了一些三方網路框架的使用以及內部實現原理。對於三方框架的使用自然不用多說 手到擒來。但是每每問到內部實現原理時就相形見絀了。因此最近專門花了點時間準備寫幾篇對於網路請求框架的分析部落格供學生們參考。就拿okhttp開刀吧 首先鄙人總結了一下關於okhttp方面都有...