自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

關(guān)于Android適配,看完這篇文章就夠了

移動(dòng)開發(fā) Android
本文主要介紹了關(guān)于Android界面適配的相關(guān)內(nèi)容,適合1-3年的Android開發(fā)工程師閱讀。

本文主要介紹了關(guān)于Android界面適配的相關(guān)內(nèi)容,適合1-3年的Android開發(fā)工程師閱讀。

1. 為什么要適配?

我們先來(lái)看一組統(tǒng)計(jì)數(shù)據(jù)和圖表。

【2014設(shè)備分布圖 】   

[[185118]] 

【2015設(shè)備分布圖 】 

 

 

2015設(shè)備分布圖  

【設(shè)備品牌分布 】 

 

 

設(shè)備品牌分布 

【屏幕尺寸分布圖 】 

 

 

屏幕尺寸分布圖 

【系統(tǒng)分布圖 】 

 

 

系統(tǒng)分布圖 

【與iOS的對(duì)比 】 

 

 

與iOS的對(duì)比 

從上面幾個(gè)圖就可以看出android設(shè)備多,品牌多,屏幕尺寸多,還有系統(tǒng)版本分布比較大,碎片化比較嚴(yán)重。這也就是android之所以要進(jìn)行適配的原因。此外,android的適配包括了系統(tǒng)版本的適配,屏幕尺寸的適配等等。

2. 關(guān)于適配各種各樣的概念

單位

——px (pixel):像素,屏幕上的點(diǎn),最小的獨(dú)立顯示單位,px均為整數(shù),沒有小數(shù)。一般都是正方行像素參考鏈接

——in:表示英寸,每英寸相當(dāng)于2.54厘米。

概念

——screen size(屏幕尺寸):屏幕的物理尺寸,表示的是對(duì)角線長(zhǎng),如手機(jī)屏幕3.5寸,就表示對(duì)角線長(zhǎng)度為3.5寸,大概8.89厘米。

——屏幕分辨率:指屏幕在橫邊和縱邊上的像素點(diǎn)數(shù),單位是px,比如1920*1080 3:

——屏幕像素密度:dpi(dots per inch),每英寸像素點(diǎn)數(shù),比如120dpi,160dpi,它與屏幕尺寸與屏幕分辨率有關(guān)。

android單位與換算

dp 或者dip,設(shè)備獨(dú)立像素,即密度無(wú)關(guān)像素,注意與dpi不同,以160dpi為基準(zhǔn),1dip=1px 屏幕密碼,density = dpi / 160,因此如個(gè)屏幕密度為1則1dp = 1px, 如果為2則1dp = 2px 3:sp(scale-independent pixels),字體的推薦單位,可以根據(jù)文字***項(xiàng)進(jìn)行大小縮放,官方建議最小使用值為12sp,其次盡量使用偶數(shù)值。

*dpi

mdpi → [120dpi ~ 160dpi]

hdpi → [160dpi ~ 240dpi]

xdpi → [240dpi ~ 320dpi]

xxdpi → [320dpi ~ 480dpi]

xxxdpi → [480dpi ~ 640dpi]

案例

比如一個(gè)手機(jī)屏幕分辨率480*800 , 屏幕尺寸3.7in,它的dpi是多少,在布局中寬設(shè)置320dp,該寬度為多少像素?

理論計(jì)算值:先計(jì)算出對(duì)角線的像素點(diǎn)數(shù)480 480 + 800 800 = 933933,再計(jì)算出每英寸的像素點(diǎn)數(shù) 933/3.7 = 252dpi,最終計(jì)算出的dpi為252。 計(jì)算320dp對(duì)應(yīng)的像素值:首先計(jì)算出屏幕密度,屏幕密度值則相當(dāng)于1dp對(duì)應(yīng)的像素值: 320 (252/160) = 504px, (手機(jī)屏幕才480px,算出的寬度居然比屏幕還寬,如果成立,則說(shuō)明如果在上訴屏幕上設(shè)置為320dp,則有一部分處于屏幕外)

注意:手機(jī)上面計(jì)算出的DPI為理論值,實(shí)際上只有120(low)、160(medium)、240(high)、320(xhigh)等這幾種, 因此實(shí)際的計(jì)算公式為: 320 (240 /160)=480px,與屏幕寬度相同,說(shuō)明在上訴屏幕設(shè)置為320dp,剛好占據(jù)整個(gè)屏幕。

3. 怎么適配?

上面僅僅是知道了為什么適配,和各種各樣的概念,那怎么適配?這里主要看手機(jī),不涉及平板適配。

切圖規(guī)則

從上面的概念我們知道,160dpi的時(shí)候 1dp=1px,因此在設(shè)計(jì)圖標(biāo)時(shí),(mdpi, hdpi,xhpi,xxhpi,xxhpi)的比例值為 2:3:4:6:8。比如系統(tǒng)icon,mdpi為4848,則xdpi為7272,比例值為1.5。 從上圖res結(jié)構(gòu)看到有一類mipmap- *文件夾,這個(gè)系統(tǒng)新加為了放置系統(tǒng)圖標(biāo)的文件夾。

各種圖標(biāo)的尺寸

以下是官方建議的圖標(biāo)尺寸 

 

 

 

寬度值設(shè)置

我們先來(lái)看看我們?cè)谝粋€(gè)界面中設(shè)置一個(gè)320dp寬度的一個(gè)view。 

 

 

 

從圖上可以看到不同的屏幕上展示了不同的效果(忽略平板),有的手機(jī)上占滿了整個(gè)屏幕寬度,而有的手機(jī)上確只占據(jù)屏幕寬度的一部分。因此在視覺出圖的時(shí)候,比如已800 * 480的尺寸出圖,標(biāo)注占滿整個(gè)屏幕寬度240dp,則真實(shí)展現(xiàn)的效果則會(huì)在各個(gè)手機(jī)上不一致。

因此在開發(fā)中,可以采用match_parent來(lái)設(shè)置占滿整個(gè)屏幕,如果是其他尺寸,可以采用自適應(yīng)或者weight來(lái)設(shè)置view所占用的寬高。

限定符

我們從上面看到有*dpi作為了限定符,同時(shí)還有其他的比如large限定符,sw限定符等等限定符,就不一一展開了。

.9圖片

.9圖為系統(tǒng)在圖片周圍加一個(gè)像素的透明邊,圖片必須要以.9作為描述符。 比如以一個(gè)圖片來(lái)作為背景,如果不是.9圖片,則如果內(nèi)容區(qū)域大于圖標(biāo),則圖片會(huì)被拉伸。下圖四個(gè)角都被拉伸了。 

 

 

 

下圖設(shè)置了圖片的拉伸區(qū)域,則可以看到圖片的四個(gè)角都未被拉伸,這樣最終呈現(xiàn)的視覺效果就好很多。 

 

 

 

標(biāo)注位置:相鄰兩邊進(jìn)行標(biāo)注,不能只標(biāo)注一邊,也不能只標(biāo)注相對(duì)的兩邊,如果只標(biāo)注兩邊,則拉伸區(qū)域?yàn)橄嘟徊糠?,文本區(qū)域?yàn)橛疫吪c下邊控制,如果不標(biāo)注則沾滿整個(gè)寬度。

同時(shí)需要注意的是:圖片可以分段標(biāo)注,但圖片最終拉伸的效果與標(biāo)注的像素點(diǎn)有關(guān),比如同一邊上下均被標(biāo)注且上下像素點(diǎn)比為3:1,則最終拉伸比例也是3:1。

4. 更多Tips

a:hdpi ,xhdpi等中的相同圖片大小要成比例,這樣才能在相同屏幕不同分辨率下展現(xiàn)一致。注意上面的2:3:4:6:8

b:同一類型,圖片大小要一致,可能多人做多個(gè)模塊,導(dǎo)致切除的同一類型圖片相差1,2個(gè)像素(可以建立一個(gè)資源庫(kù),反查已有圖標(biāo)尺寸)。

c:相同圖片問題,不同人做不同模塊,很多圖標(biāo)都是相同的,由于開發(fā)不同,會(huì)導(dǎo)致一個(gè)包中有相同圖片,這樣會(huì)導(dǎo)致包大小增長(zhǎng)。

d:能使用純色的圖片,就讓開發(fā)盡量使用顏色值,不用切圖。

e:jpg與png圖片相比較,jpg大小會(huì)小很多,如果有大圖且沒有模糊漸變等要求,盡量采用jpg格式。

f:很多簡(jiǎn)單圖片都能用代碼實(shí)現(xiàn),比如圓,矩形等,可以讓開發(fā)用代碼實(shí)現(xiàn),減少包的大小。

g:如果包的大小太大時(shí),盡量保證更高尺寸的圖片存在,這樣低屏幕密度的手機(jī)也能展現(xiàn)很清晰的圖片,但是如果只有小圖,就會(huì)放大拉伸,會(huì)導(dǎo)致圖片變形或者不清晰。

h:.9注意標(biāo)注拉伸區(qū)域與內(nèi)容區(qū)域,與圖片外邊距的padding,可以在圖上直接標(biāo)注。(如果內(nèi)容區(qū)域上下距離不相等,再填充多行文字時(shí)會(huì)造成文字不居中,這時(shí)可以直接在圖片上空出padding)

i:.9圖片只能拉伸不能壓縮,壓縮會(huì)導(dǎo)致圖片變形,因此在作圖過(guò)程中要確定一下圖片的最小尺寸,(比如,給出一個(gè)確定高度的矩形區(qū)域,里面放置一個(gè)初始高度大于矩形的.9圖片,會(huì)導(dǎo)致圖片壓縮)。

j:.9圖片一般只做小尺寸就可以,除非邊框有漸變等元素,才做多個(gè)尺寸。

k:關(guān)于圖片標(biāo)注,美術(shù)要轉(zhuǎn)換一下單位,px轉(zhuǎn)換到相應(yīng)的dp上,開發(fā)可以直接使用該數(shù)值。

l:關(guān)于字體,字體大小sp,但是如果字體呈現(xiàn)在一個(gè)固定高度的矩形框中時(shí),再能調(diào)整字體大小的手機(jī)上時(shí),可能會(huì)展示不全(展現(xiàn)字體的外部圖片,背景等盡量不要寫死高度)。

m:標(biāo)注圖片時(shí),如果一個(gè)icon占滿整個(gè)寬度,則可以不用標(biāo)注icon寬度尺寸,只需要標(biāo)注距離邊框的尺寸,開發(fā)會(huì)采用自適應(yīng),如果確定寬度,在有的屏幕上只能占據(jù)一半寬度, 

 

 

 

看到這里,不知道你對(duì)自己的Android開發(fā)經(jīng)驗(yàn)是不是有了更多的感悟~ 本周二,我們邀請(qǐng)了網(wǎng)易云音樂資深移動(dòng)開發(fā)工程師程寅與大家分享移動(dòng)開發(fā)相關(guān)的工作經(jīng)驗(yàn)。

 

責(zé)任編輯:龐桂玉 來(lái)源: 安卓開發(fā)精選
相關(guān)推薦

2017-03-07 15:35:26

Android適配 界面

2019-07-10 15:15:23

JVM虛擬機(jī)Java

2019-10-31 09:48:53

MySQL數(shù)據(jù)庫(kù)事務(wù)

2017-03-30 22:41:55

虛擬化操作系統(tǒng)軟件

2021-06-04 07:27:24

sourcemap前端技術(shù)

2017-12-12 12:53:09

2021-11-10 07:47:48

Traefik邊緣網(wǎng)關(guān)

2015-11-02 09:49:04

Android屏幕適配官方指導(dǎo)

2020-10-13 07:44:40

緩存雪崩 穿透

2018-04-23 11:00:44

PythonRedisNoSQL

2019-08-01 11:04:10

Linux磁盤I

2022-05-27 08:18:00

HashMapHash哈希表

2024-07-05 11:01:13

2019-09-25 09:17:43

物聯(lián)網(wǎng)技術(shù)信息安全

2024-03-26 00:00:06

RedisZSet排行榜

2020-07-08 10:36:18

Linux 運(yùn)維 數(shù)據(jù)

2018-10-31 17:22:25

AI人工智能芯片

2021-10-14 06:36:38

存儲(chǔ)云存儲(chǔ)本地存儲(chǔ)

2022-02-18 06:56:18

Wi-Fi路由器局域網(wǎng)

2024-02-28 08:59:47

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)