新聞中心
android需要做屏幕適配的原因
android面世以來,google開源了android系統(tǒng),各家廠商各自為政,導(dǎo)致屏幕尺寸沒有統(tǒng)一標(biāo)準(zhǔn),屏幕的寬高比各種各樣,屏幕密度也是各個廠家攀比的資本, 導(dǎo)致Android開發(fā)者想要用一套代碼來適配所有的設(shè)備變得格外的困難,雖然 google出了 dp單位來替代px,但是 dp依然有它無法完全適配的地方。
這個也就是需要我們利用其他手段去 完成適配的地方。創(chuàng)新互聯(lián)專注于尼瑪企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城建設(shè)。尼瑪網(wǎng)站建設(shè)公司,為尼瑪?shù)鹊貐^(qū)提供建站服務(wù)。全流程定制制作,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
1. 像素點
像素點是物理概念,用術(shù)語來解釋,就是如下這段話:
通常所說的像素,就是CCD/CMOS上光電感應(yīng)元件的數(shù)量,一個感光元件經(jīng)過感光,光電信號轉(zhuǎn)換,A/D轉(zhuǎn)換等步驟以后,在輸出的照片上就形成一個點,我們?nèi)绻延跋穹糯髷?shù)倍,會發(fā)現(xiàn)這些連續(xù)色調(diào)其實是由許多色彩相近的小方點所組成,這些小方點就是構(gòu)成影像的最小單位“像素”(Pixel)。簡而言之,像素就是手機屏幕的最小構(gòu)成單元。
簡單來說,像素點就是屏幕上色彩區(qū)域的最小單位
。在所有的設(shè)備上,1px 都是等同的。UI姐姐作圖一般都會以px為單位。
2. 分辨率
比如:19201080 分辨率,表示當(dāng)前設(shè)備的屏幕是由 橫向1080 縱向1920 個像素點 組合而成。
3. 屏幕尺寸
屏幕對角線的長度。 一般以英寸為單位,常見的屏幕尺寸有
4.7
,5.5
,6.0
。
4. 屏幕像素密度
定義:
一平方英寸
面積內(nèi),存在多少個
像素點。
同樣是1920*1080
的分辨率,存在兩款手機,一個是4.7英寸,一個是6.0英寸,這兩者的像素密度
是不一樣的。
屏幕密度的單位: dpi(dots per inch).
標(biāo)準(zhǔn)屏幕分辨率 :160dpi 。即:一平方英寸
面積,存在160
像素點。(mdpi).
5. 屏幕尺寸,分辨率,像素密度 三者之間的關(guān)系
像素密度
,可以由屏幕尺寸
和分辨率
計算得出。我這里有一塊1920*1080的5寸屏幕,通過上面的公式計算得出,它的像素密度為 440dpi .可見,px是和像素密度有直接關(guān)系的 像素單位。
6. 密度無關(guān)的像素單位(dp,或者dip)
全英文為:density-independent pixel.
(注意此處是dip
,上面的像素密度是dpi
, 千萬不要因為這個,在面試的時候出丑 )
使用dp作為長度單位,可以保證在不同的屏幕像素密度的手機上顯示 很相似的效果。
比如: 使用480x800
的手機上,要畫一條長度為一半屏幕寬的線條,我們可以設(shè)置線條的長度為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
的屏幕為標(biāo)準(zhǔn),畫了一條長度為160px
的線,長度為屏幕寬度的一半
,這個時候,你直接用160dp
,一般就能完成適配。但是如果這樣的布局 運行在320x480
分辨率,但是屏幕密度為150dpi
略小于160dpi
,這個時候 你布局里面寫的160dp
就會實際超過160px
不再是占屏幕寬的一半,而是略微超過。
7. 獨立比例像素 (sp)
全英文為: scale-independent pixel (簡稱sp或者sip)
專門用于字體大小表示。
推薦使用12sp
以上的偶數(shù)作為 字體大小, 不要使用奇數(shù),或者浮點型小數(shù),因為容易造成精度丟失。
屏幕適配攻略
1. 布局適配
使用多套布局適應(yīng)不同屏幕。此方法必須要了解
布局限定符
的概念。限定符: 在原本的
layout
后面加上橫杠,然后加上限定名。形成 layout-XXX的形式,具體規(guī)則請參考谷歌官網(wǎng): https://developer.android.google.cn/training/multiscreen/screensizes使用上面的限定符,幾乎可以解決所有的適配問題,但是另外還有一個小技巧幫我們節(jié)省工作量 :布局別名.
適用情形為:當(dāng)多個加了限定符的 layout.xml中都引用了同一個 子布局,而子布局的內(nèi)容可能相同,也可能不同。
這個時候,使用布局別名,可以節(jié)省操作量。
2 代碼適配
我們通過java代碼去獲取屏幕的寬高,動態(tài)去指定控件的寬高 。
獲取屏幕寬高的方式我不想在這里占篇幅。
代碼適配,一般用于動態(tài)創(chuàng)建 控件,或者自定義view自己繪制圖形的時候。
特別提一下接口適配:當(dāng)你去向后臺請求圖片的時候,我們可以在參數(shù)中帶入屏幕的寬高,或者是控件的寬高,來獲取我們想要的圖片,在圖片返回之后直接就能顯示得最優(yōu),而不需要我們app代碼中多動手腳。
方案評價:這個比下下策稍微好一點,但是
控件大小
直接進入了代碼,還是讓代碼不夠雅觀.
3. 布局組件的適配
盡量直接通過一套布局解決所有的麻煩,這個就叫布局組件的適配。這個是上上策.
包含如下手段:
使用像素密度無關(guān)的單位
dp sp
杜絕使用絕對布局,多使用相對和線性布局
多使用 wrap_content match_parent 以及線性布局的權(quán)重
多用 minWidth minHeight,lines 等屬性
使用多套限定的 dimens中定義的尺寸
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
分享題目:android需要做屏幕適配的原因-創(chuàng)新互聯(lián)
鏈接URL:http://www.dlmjj.cn/article/jchcd.html