動態讓控制項超出螢幕 螢幕適配的3個妙招

2021-10-16 02:51:17 字數 1669 閱讀 3269

螢幕適配是面試中必問的乙個題目,今天給大家說說怎麼樣做螢幕適配。

1: 螢幕適配的2個核心的配置

a: 設計解析度: 美術設計資源時候的解析度, 也是我們所有資源的參考解析度,我們就是基於這個解析度來適配到其它不同的手機解析度上的;

b: 適配策略: 固定高度/固定寬度;

設計解析度大家都好理解,那麼什麼是適配策略呢?

假設我們以設計解析度是 960x640為例,我們要適配到 1920x1080上面, 大家會發現,這個怎麼適配啊?960x640----> 1920x1080,高度不一樣,寬度不一樣,有兩個不同的緯度需要適配,這樣的話處理起來有一些難度。遊戲引擎就想了乙個辦法,我先在乙個緯度保持一致,然後在另外乙個緯度來進行適配;那到底是選哪個緯度呢?如果是高度一致,那麼就是固定高度,如果是寬度一致,那麼就是固定寬度。這個就是固定高度與固定寬度的由來。

固定高度: 960x640, 先做好邏輯解析度((1920 * 640 / 1080)x 640)適配, 然後,我們在乘以乙個比例scale(1080/640), 到1920x1080上;

固定寬度: 960x640, 先做好邏輯解析度適配 (960 x (1080 * 960 /1920)), 然後我們在剩乙個比例scale(1920/960), 到 1920x1080上;

遊戲引擎處理的大小,座標,都是邏輯大小,遊戲視窗的邏輯大小就是我們固定高度or固定寬度策略算出來以後的解析度;

所以我們在**裡面的大小位置,都是基於邏輯解析度的,在最終繪製的時候,大小,位置,都會乘以到目標畫素解析度鎖固定的比例scale;

比如 100 * 100, 固定高度, 到 1920x1080後畫素大小是 (100x100) *1080/640, 這樣我們最終就適配到 1920x1080上了;

妙招1: 停靠點

乙個緯度和設計是一致的,我們只要考慮另外乙個緯度的適配,在另外乙個緯度的範圍內,把設計裡面的主要內容都擺布進來。這個時候就會出現相對的幾個點,比如我的型別是基於中心的,基於上面的,基於下面的… 所有在適配的時候,我們一般會做幾個標誌的參考點,如圖紅色點點

核心原理就是,不管你的螢幕大小怎麼變,我只要動態的根據螢幕大小來調整參考點的位置,這樣,相對於參考點的元素也會跟著移動,一般適配我們都是這樣來做的,那這個適配我們很多都會有元件來完成,例如widget等。你上邊的logo,無論螢幕怎麼變,都是上面的,下邊的,無論螢幕怎麼變都是下面的。

妙招2: 內容縮放

即使這樣,因為乙個緯度畢竟不同,有可能在這個緯度上,內容放不下,粘到一起了,我們還是的要對內容的大小來做一些調整, 可以根據邏輯解析度,來做一些內容上的縮放,能讓這些內容排下;

秒招3: 大小調整

有一些ui控制項,是區域性的,比如滾動條等,我們希望適配後,區域大小也要隨螢幕的變化而變化,那麼這個時候,可以設定區域相對於邊界的偏移, 如圖:

這樣邊界變了,大小也跟著變了。

其實搞懂了適配的核心原理,一點都不難,下次面試你會回答了麼?

imageview的螢幕適配

imageview img imageview convertview.findviewbyid r.id.themeandbackground theme img.setlayoutparams new relativelayout.layoutparams helper.getdisplaywi...

Android的螢幕適配

所以就像是你去公司面試,第一印象也是很重要滴 本質1 使得布局元素自適應螢幕尺寸 開發中,我們使用的布局一般有 由於絕對布局 absolutelayout 適配性極差,所以極少使用。對於線性布局 linearlayout 相對布局 relativelayout 和幀布局 framelayout 需要...

簡單的螢幕適配

目前為止,iphone螢幕尺寸已經有四種 3.5 inch 1 3g 3gs 4 4s 4.0 inch 5 5s 5c 4.7 inch 6 5.5 inch 6plus 看一下iphone4 6 的螢幕高寬比 iphone4 s 解析度960 640,高寬比1.5 基本不再適配 iphone5 ...