真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android屏幕適配;知識點+攻略+面試要點-創(chuàng)新互聯(lián)

引子

屏幕適配是 android?開發(fā)/面試?繞不開的一個問題。本文 將屏幕適配的知識要點完整展現(xiàn)給各位讀者。

創(chuàng)新互聯(lián)建站是網(wǎng)站建設技術企業(yè),為成都企業(yè)提供專業(yè)的成都網(wǎng)站制作、網(wǎng)站設計,網(wǎng)站設計,網(wǎng)站制作,網(wǎng)站改版等技術服務。擁有10年豐富建站經(jīng)驗和眾多成功案例,為您定制適合企業(yè)的網(wǎng)站。10年品質(zhì),值得信賴!

正文大綱

  • android需要做屏幕適配的原因

  • 基礎知識點(很重要)

  • 屏幕適配攻略

正文

android需要做屏幕適配的原因

關鍵字:android碎片化

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

面試點

Q: 關于屏幕適配,為什么 有了dp單位,依然要適配呢?
A:?dp雖然能夠解決大部分情況下的適配問題,但是針對少數(shù)機型,無法適配,
原因 是:?google提供的dp單位,在現(xiàn)有的android市場環(huán)境下,是不可靠的,編碼時的?dp,在運行時會轉(zhuǎn)化成?px,此時的px不能準確對照UI的原本設計。
最直觀體現(xiàn)就是: 同樣300dp,在A手機上可以占滿全寬,但是在B手機上,占不滿,或者會超出全寬。
至于為什么dp不可靠??后面會解釋。

基礎知識點(很重要)

以下概念很基礎,但是也很重要,基礎知識缺少一個環(huán)節(jié),后面復雜的攻略理解起來就有障礙。

1. 像素點

像素點是物理概念,用術語來解釋,就是如下這段話:
通常所說的像素,就是CCD/CMOS上光電感應元件的數(shù)量,一個感光元件經(jīng)過感光,光電信號轉(zhuǎn)換,A/D轉(zhuǎn)換等步驟以后,在輸出的照片上就形成一個點,我們?nèi)绻延跋穹糯髷?shù)倍,會發(fā)現(xiàn)這些連續(xù)色調(diào)其實是由許多色彩相近的小方點所組成,這些小方點就是構(gòu)成影像的最小單位“像素”(Pixel)。簡而言之,像素就是手機屏幕的最小構(gòu)成單元。

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

2. 分辨率

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

3. 屏幕尺寸

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

4. 屏幕像素密度

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

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

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

Android屏幕適配;知識點+攻略+面試要點

比如下圖所示:

Android屏幕適配;知識點+攻略+面試要點

我這里有一塊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.
簡而言之規(guī)律就是:?屏幕像素密度(dpi)越高的手機,1dp所代表的px就越多.

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

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

7. 獨立比例像素 (sp)

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

面試點

Q: sp和dp有什么區(qū)別?
A: 通常情況下,dp和sp效果類似,但是有一點,如果用戶 調(diào)整了手機字體,比如 從標準,變成了 超大,那么,1dp 原本等于1px依然不變,但是1sp就會從1px變成3px(只是舉個例子,數(shù)值不必認真).
因此,在用戶調(diào)整字體的情況下,同樣的布局,可能出現(xiàn) 窗口大小不變,但是文字尺寸發(fā)生變化的情況。


屏幕適配攻略

1. 布局適配

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

Android屏幕適配;知識點+攻略+面試要點

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

Android屏幕適配;知識點+攻略+面試要點

Android屏幕適配;知識點+攻略+面試要點

使用上面的限定符,幾乎可以解決所有的適配問題,但是另外還有一個小技巧幫我們節(jié)省工作量 :布局別名.
適用情形為:當多個加了限定符的 layout.xml中都引用了同一個 子布局,而子布局的內(nèi)容可能相同,也可能不同。
這個時候,使用布局別名,可以節(jié)省操作量。

Android屏幕適配;知識點+攻略+面試要點

Android屏幕適配;知識點+攻略+面試要點

方案評價: 講道理,這個是下下策,因為在你需要修改布局的時候,你可能需要修改多套布局,這個要多惡心就多惡心,懂的人都懂.

2 代碼適配

我們通過java代碼去獲取屏幕的寬高,動態(tài)去指定控件的寬高 。
獲取屏幕寬高的方式我不想在這里占篇幅。
代碼適配,一般用于動態(tài)創(chuàng)建 控件,或者自定義view自己繪制圖形的時候。
特別提一下接口適配:當你去向后臺請求圖片的時候,我們可以在參數(shù)中帶入屏幕的寬高,或者是控件的寬高,來獲取我們想要的圖片,在圖片返回之后直接就能顯示得最優(yōu),而不需要我們app代碼中多動手腳。

方案評價:這個比下下策稍微好一點,但是?控件大小直接進入了代碼,還是讓代碼不夠雅觀.

3. 布局組件的適配

盡量直接通過一套布局解決所有的麻煩,這個就叫布局組件的適配。這個是上上策.
包含如下手段:

  • 使用像素密度無關的單位?dp sp

  • 杜絕使用絕對布局,多使用相對和線性布局

  • 多使用?wrap_content match_parent?以及線性布局的權(quán)重

  • 多用?minWidth?minHeight,lines?等屬性

  • 使用多套限定的?dimens中定義的尺寸

可能面試點

Q:同一個布局文件中,我使用線性布局和相對布局都可以達成目的,那么如何抉擇?
A: 使用相對布局,很有可能出現(xiàn) 第一次測量"不滿意"的情況,從而會測量第二次。如果兩者都可以達成目的,并且兩者的布局層級相同,并且線性布局中沒有使用到權(quán)重(權(quán)重可能也會觸發(fā)第二次測量),此時,優(yōu)先使用線性布局。 除此之外,都選擇相對布局。

結(jié)語

屏幕適配,工作中并不困難,但是面試多會問到。
現(xiàn)今主流的兩種完美適配方案,有頭條方案(直接變更DisplayMetrics中的density),以及 多套dimens適配方案,兩者各有千秋。


分享文章:Android屏幕適配;知識點+攻略+面試要點-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://weahome.cn/article/djjosi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部