Android之重新推導(dǎo)設(shè)備尺寸

寫過多少布局,做過多少適配硫惕。我認(rèn)真著茧痕,你的不知所措。這種迷茫心情 我想誰都會有恼除,幸運的是能分擔(dān)你的愁踪旷。我tm居然唱出來了。你敢信豁辉?

沒錯埃脏,今天雞排君從頭講設(shè)備尺寸和適配這點事情。也許當(dāng)時跑得太急秋忙,沒好好回頭欣賞它的美彩掐。學(xué)習(xí)的時候只看到了怎么用,卻沒有思考這些是怎么出現(xiàn)的』易罚現(xiàn)在握緊我的手堵幽,帶你一步一步推導(dǎo)這些看上去很基礎(chǔ),卻有時模模糊糊的東西弹澎。(比如自定義View里的單位如何適配朴下?)

本篇你能收獲什么?

  • 如標(biāo)題一樣苦蒿,徹底搞清楚android上的適配由來而不是背了概念
  • 還有抓住一直大雞排殴胧。

目錄

  • 什么是屏幕尺寸
  • 一寸到底是多少?
  • DPI每英寸點數(shù)
  • 獨立的像素密度是什么佩迟?
  • 屏幕相關(guān)的api

注:這里的推導(dǎo)是自己的理解团滥,非官方的解釋


什么是屏幕尺寸?

我們來看下面這幅圖报强,屏幕對角線的長度灸姊。(即:設(shè)備的左上角至右邊下角那條線)

注意:我們需要知道對角線的長度怎么算的,其實很簡單秉溉,利用勾股定律即可力惯。

根號下720平方+1280平方等于設(shè)備對角線像素。

√720*720+1280*1280
=√518400+1638400
=√2156800
≈1468.6047800(px)

另一個疑惑就出現(xiàn)了召嘶,我們平時描述的4.3寸父晶、5寸是指屏幕的什么。
這里的寸是指什么鬼弄跌?
為什么我們算出了是1468這么大甲喝?
黑人問號臉?碟绑?why

一寸到底是多少俺猿?

那哦跟濃港啊茎匠,介鍋一寸 巴拉巴拉啦.....
停 打住,我聽不懂那些押袍。

那好吧诵冒,我們現(xiàn)在手上這臺設(shè)備是720*1280,我們前面計算過它的屏幕對角尺寸約等于1468個像素密度谊惭。注意這里說的是屏幕對角尺寸不是屏幕尺寸汽馋。商家描述說這臺碉堡的手機是4.5寸的。既然這里的尺寸就是指對角線圈盔。我們反向推算豹芯。

1468/4.5
≈326.2222

這里得到326.222就是我們這臺設(shè)備的一寸所占的像素點。

DPI每英寸點數(shù)

我們首先知道驱敲,谷歌官方把android設(shè)備的參考標(biāo)準(zhǔn)定義為一寸是160px
這里會get一個概念叫dpi(dpi:dots per inch )铁蹈。即每寸的像素有多少個點。面試的時候經(jīng)常有同學(xué)把dpi握牧、dip娩梨、dp弄混了。下面我接著推狈定。

現(xiàn)在要說一下獨立的像素密度了颂龙。獨立的像素密度?纽什?聽著就好繞口,俺有一句mmp稿湿,不知道當(dāng)講不當(dāng)講押赊,這又是蛇饺藤?

獨立像素密度DIP/DP

好,既然谷歌的一寸是160px流礁,為什么我們是剛剛算出來的是320px?(為了方便計算神帅,省去那6個像素點,別跟我糾結(jié)了)

嗯元镀,這個問題問得好!

因為android設(shè)備中160px每寸的密度無法滿足用戶的鈦合金眼栖疑,甚至覺得顆粒感爆炸好喵?
所以廠商將 原本160個像素中又插入一波160像素卿闹。就變成 了320像素萝快。如下圖所示。(真實的屏幕生產(chǎn)不是這樣插像素的揪漩,這里只是便于理解奄容。)


一開始只有紅色的像素點,后面插入了一些像素進來嫩海。在同樣的空間下密度增大了一倍叁怪。所以320像素得到了解釋。

由此我們又得到一個概念叫密度奕谭。(density)

320/160
=2

這里的密度就是2了,所以我們開發(fā)中寫1dp在720*1280的設(shè)備上會變成2px官册。有興趣的小伙伴可以寫一個自定義View把1dp設(shè)置成寬度难捌,然后在View里打印一下1dp的寬度得到的是不是2px。同理在其他分辨率上也是一樣的算法员淫。
如:240/160=1.5(倍密度)

實際情況下击敌,你現(xiàn)在的設(shè)備如果密度是2.0,那么你布局時1dp將轉(zhuǎn)換成2px在設(shè)備上呈現(xiàn)。
到這里我們總算是明白了刃宵,什么是獨立像素密度徘公。即:dp轉(zhuǎn)換成px代表幾個像素。業(yè)界把它叫做 Density independent pixels 簡稱dip从隆,直譯過來的意思是獨立的像素密度缭裆。

用我自己的話來講,*dp是運行在物理設(shè)備之前用來描述控件大小的一種描述單位辛燥,其中我們開發(fā)中用的單位dp就是dip一個意思缝其。而dpi是指每寸像素密度。不要再弄混了喔内边。喔喔喔!W旄摺和屎!

**現(xiàn)在回過頭來看下面的概念,是不是清晰多了套啤? **

  • dip: Density independent pixels 随常,設(shè)備無關(guān)像素。
  • dp :就是dip(以后別糾結(jié)dip和dp的區(qū)別了好么)
  • px : 像素
  • dpi :dots per inch 止潮,一英寸多少個像素點钞楼。素密度
  • density : 密度
  • 分辨率 : 橫縱2個方向的像素點的數(shù)量
  • 屏幕尺寸: 屏幕對角線的長度

屏幕相關(guān)的api

  DisplayMetrics metric =Resources.getSystem().getDisplayMetrics()袄琳;
        int DMwidth = metric.widthPixels;  // 屏幕寬度(px)
        int DMheight = metric.heightPixels;  // 屏幕高度(px)
        float DMdensity = metric.density;  // 屏幕密度(/ 1.0 / 1.5/ 2.0)
        int DMdensityDpi = metric.densityDpi;  // 屏幕密度DPI(160 / 240/ 320)
  Log.e("metric","屏幕寬度="+DMwidth+" 屏幕高度="+DMheight+" 屏幕密度="+DMdensity+" 屏幕密度DPI"+DMdensityDpi);
      

下一篇我會對自定義View單位從源碼層進行剖析燃乍。
View單位轉(zhuǎn)換的秘密(系統(tǒng)源碼分析)


如何下次找到我?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末刻蟹,一起剝皮案震驚了整個濱河市舆瘪,隨后出現(xiàn)的幾起案子红伦,更是在濱河造成了極大的恐慌,老刑警劉巖昙读,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛮浑,死亡現(xiàn)場離奇詭異,居然都是意外死亡沮稚,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進店門澳厢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剩拢,“玉大人饶唤,你說我怎么就攤上這事∧伎瘢” “怎么了?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵性穿,是天一觀的道長雷滚。 經(jīng)常有香客問我,道長呆万,這世上最難降的妖魔是什么幔欧? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮崇呵,結(jié)果婚禮上庄吼,老公的妹妹穿的比我還像新娘严就。我一直安慰自己,他們只是感情好废菱,可當(dāng)我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布抖誉。 她就那樣靜靜地躺著,像睡著了一般旁理。 火紅的嫁衣襯著肌膚如雪我磁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天芋哭,我揣著相機與錄音郁副,去河邊找鬼。 笑死拔疚,一個胖子當(dāng)著我的面吹牛既荚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播恰聘,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼诫钓!你這毒婦竟也來了篙螟?” 一聲冷哼從身側(cè)響起遍略,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎绪杏,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體势似,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡履因,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年盹愚,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片毅舆。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡愈腾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出悦即,到底是詐尸還是另有隱情礁鲁,我是刑警寧澤,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布冗美,位于F島的核電站析二,受9級特大地震影響节预,放射性物質(zhì)發(fā)生泄漏属韧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一糠赦、第九天 我趴在偏房一處隱蔽的房頂上張望锅棕。 院中可真熱鬧,春花似錦裸燎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至袱蚓,卻和暖如春几蜻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背梭稚。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工弧烤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人暇昂。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓急波,卻偏偏與公主長得像,于是被迫代替她去往敵國和親澄暮。 傳聞我的和親對象是個殘疾皇子阱扬,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內(nèi)容