当前位置:网站首页>Android屏幕適配-重點盤點,面試安卓工程師會問到那些問題

Android屏幕適配-重點盤點,面試安卓工程師會問到那些問題

2022-01-15 02:36:12 mb61c1dbbb44788

=====================================================================

 android需要做屏幕適配的原因


關鍵字:android碎片化

android面世以來,google開源了android系統,各家廠商各自為政,導致屏幕尺寸沒有統一標准,屏幕的寬高比各種各樣,屏幕密度也是各個廠家攀比的資本, 導致Android開發者想要用一套代碼來適配所有的設備變得格外的困難,雖然 穀歌出了 dp單比特來替代px,但是 dp依然有它無法完全適配的地方。這個也就是需要我們利用其他手段去 完成適配的地方。

 面試點

Q: 關於屏幕適配,為什麼 有了 dp單比特,依然要適配呢?

A: dp雖然能够解决大部分情况下的適配問題,但是針對少數機型,無法適配, 原因 是:google提供的 dp單比特,在現有的 android市場環境下,是 不可靠的,編碼時的 dp,在運行時會轉化成 px,此時的px不能准確對照UI的原本設計。

最直觀體現就是: 同樣 300dp,在A手機上可以占滿全寬,但是在B手機上,占不滿,或者會超出全寬。至於為什麼dp不可靠? 後面會解釋。

 基礎知識點(很重要)

以下概念很基礎,但是也很重要,基礎知識缺少一個環節,後面複雜的攻略理解起來就有障礙。

1. 像素點

像素點是物理概念,用術語來解釋,就是如下這段話:通常所說的像素,就是CCD/CMOS上光電感應元件的數量,一個感光元件經過感光,光電信號轉換,A/D轉換等步驟以後,在輸出的照片上就形成一個點,我們如果把影像放大數倍,會發現這些連續色調其實是由許多色彩相近的小方點所組成,這些小方點就是構成影像的最小單比特“像素”(Pixel)。簡而言之,像素就是手機屏幕的最小構成單元。

簡單來說,像素點就是 屏幕上色彩區域的最小單比特。在所有的設備上,1px 都是等同的。UI小姐姐作圖一般都會以px為單比特。

2. 分辨率

比如:19201080 分辨率,錶示當前設備的屏幕是由 橫向1080 縱向1920 個像素點 組合而成。

3. 屏幕尺寸

屏幕對角線的長度。一般以英寸為單比特,常見的屏幕尺寸有 4.7 , 5.5 , 6.0 。

4. 屏幕像素密度

定義:一平方英寸面積內,存在 多少個像素點。同樣是 1920_1080 的分辨率,存在兩款手機,一個是4.7英寸,一個是6.0英寸,這兩者的 像素密度是不一樣的。屏幕密度的單比特: dpi(dots per inch).標准屏幕分辨率 :160dpi 。即:一平方英寸面積,存在 160像素點。(mdpi).

5. 屏幕尺寸,分辨率,像素密度 三者之間的關系

像素密度,可以由 屏幕尺寸和 分辨率計算得出。計算公式為:

Android屏幕適配-重點盤點,面試安卓工程師會問到那些問題_移動開發

比如下圖所示:

Android屏幕適配-重點盤點,面試安卓工程師會問到那些問題_Android_02

我這裏有一塊1920_1080的5寸屏幕,通過上面的公式計算得出,它的像素密度為 440dpi . 可見,px是和像素密度有直接關系的 像素單比特。

6. 密度無關的像素單比特(dp,或者dip)

全英文為:density-independent pixel.(注意此處是 dip,上面的像素密度是 dpi, 千萬不要因為這個,在面試的時候出醜 )使用dp作為長度單比特,可以保證在不同的屏幕像素密度的手機上顯示 很相似的效果。比如: 使用 480x800的手機上,要畫一條長度為一半屏幕寬的線條,我們可以設置線條的長度為 240px,而在 320x480的屏幕上,我們只需要 160px,但是我們可以直接使用 160dp,來同時讓兩個屏幕上的這條線占全寬的一半。

px和dp的換算公式為:px=dp*(dpi/160)公式解讀:如果有一個屏幕密度為 160dpi的手機,在它上面,1px=1dp;而如果是 320dpi的手機,則 1px = 0.5dp. 簡而言之規律就是:屏幕像素密度(dpi)越高的手機,1dp所代錶的px就越多.

下面解釋為什麼dp有時候靠不住.

如果UI小姐姐以 320*480 dpi160的屏幕為標准,畫了一條長度為 160px的線,長度為屏幕寬度的 一半,這個時候,你直接用 160dp,一般就能完成適配。但是如果這樣的布局 運行在 320x480分辨率,但是屏幕密度為 150dpi 略小於 160dpi,這個時候 你布局裏面寫的 160dp就會實際超過 160px 不再是占屏幕寬的一半,而是略微超過。

7. 獨立比例像素 (sp)

全英文為: scale-independent pixel (簡稱sp或者sip)專門用於字體大小錶示。推薦使用 12sp以上的偶數作為 字體大小, 不要使用奇數,或者浮點型小數,因為容易造成精度丟失。

面試點

Q: sp和dp有什麼區別?

A: 通常情况下,dp和sp效果類似,但是有一點,如果用戶 調整了手機字體,比如 從標准,變成了 超大,那麼,1dp 原本等於1px依然不變,但是1sp就會從1px變成3px(只是舉個例子,數值不必認真). 因此,在用戶調整字體的情况下,同樣的布局,可能出現 窗口大小不變,但是文字尺寸發生變化的情况。

 屏幕適配攻略

1. 布局適配

使用多套布局適應不同屏幕。此方法必須要了解 布局限定符的概念。如圖:

Android屏幕適配-重點盤點,面試安卓工程師會問到那些問題_程序員_03

限定符: 在原本的 layout後面加上橫杠,然後加上限定名。形成 layout-XXX的形式,具體規則請參考穀歌官網:  https://developer.android.google.cn/training/multiscreen/screensizes, 重點摘錄如下:

Android屏幕適配-重點盤點,面試安卓工程師會問到那些問題_程序員_04

Android屏幕適配-重點盤點,面試安卓工程師會問到那些問題_移動開發_05

尾聲

一轉眼時間真的過的飛快。我們各奔東西,也各自踏上了自己的旅途,但是即使多年不見,也因為這份情誼我們依舊如從前那般“親密”。不忘初心方得始終。加油吧,程序員們,在我看來35歲,40歲從來不是危機,只要永遠不要忘記自己為何踏上征程!

最後需要同款資料的,可以?**私信我點擊【 學習】**我願意分享給你!

為了讓更多在學習中或者最近要准備面試的朋友們看到這篇文章,希望你們能多多評論,點贊+轉發!

再次感謝所有給我提供過題目的朋友們,感謝一路有你!

版权声明
本文为[mb61c1dbbb44788]所创,转载请带上原文链接,感谢
https://chowdera.com/2022/01/202201150232489615.html

随机推荐