1. 程式人生 > >(轉)[整理]Android螢幕適配(不同的螢幕解析度和尺寸)

(轉)[整理]Android螢幕適配(不同的螢幕解析度和尺寸)

原地址:http://blog.csdn.net/ttkatrina/article/details/50623043

Android螢幕適配

目錄:

在實際開發過程中,會遇到不同的機型,為了讓控制元件和佈局要在不同螢幕上顯示相近的樣子,就得在drawable-ldpi/mdpi/hdpi/xhdpi/xxhdpi不同的資料夾下放置圖片素材或者在xml中用dp作為間距單位,用sp作為文字的單位。因此要搞清楚他們的關係,否則會很糾結,或者浪費大量的時間調整介面。

概念區分

  • px(pixels)畫素,螢幕上的點,不同裝置顯示效果相同,例如,HVGA代表320×480畫素。
  • in(英寸)螢幕的物理尺寸, 每英寸等於2.54釐米。 
    • 例如我們經常說的手機螢幕大小有,5(英)寸、4(英)寸就是指這個單位。這些尺寸是螢幕的對角線長度。如果手機的螢幕是4英寸,表示手機的螢幕(可視區域)對角線長度是4 X 2.54 = 10.16釐米。
  • pt(point)標準長度單位, 1pt=1/72英寸,用於印刷業,UI設計師會用,iOS字型單位,Android開發不涉及。
  • dpi(dots per inch) 列印解析度,每英寸所能列印的點數,即列印精度; 每英寸點數,即每英寸包含畫素個數。 
    • 比如320X480解析度的手機,寬2英寸,高3英寸, 每英寸包含的畫素點的數量為320/2=160dpi(橫向)或480/3=160dpi(縱向),160就是這部手機的dpi,橫向和縱向的這個值都是相同的,原因是大部分手機螢幕使用正方形的畫素點。
  • ppi (pixels per inch)影象解析度, 畫素密度,在影象中, 每英寸所包含的畫素數目。
  • density(螢幕密度)
    , density和dpi的關係為 density = dpi/160。density這個概念方便理解不同dpi的倍數關係。
  • dp(也即dip,device independent pixels)裝置獨立畫素,Android特有的單位,與密度無關的畫素,基於螢幕密度的抽象單位,在320x480解析度,同時每英寸160點(dpi = 160)的顯示器上,1dp = 1px。
  • sp(scaled pixels)放大畫素,與刻度無關的畫素,字型單位,可以根據使用者的字型大小首選項進行縮放。sp和dp一樣,是android開發裡特有的單位, 檢視TextView的原始碼可知 Android 預設使用 sp 作為字號單位。以160ppi螢幕為標準,當字型大小為 100%時, 1sp=1px。

為什麼要把sp和dp代替px?最簡單的原因是他們不會因為ppi的變化而變化,在相同物理尺寸和不同ppi/dpi下,他們呈現的高度大小是相同。也就是說更接近物理呈現,而px則不行。

換算關係

px = dp * (dpi / 160),原來這裡的dpi是歸一化後的dpi。 
則dp = px / (ppi / 160) 
ppi = √(長度畫素數² + 寬度畫素數²) / 螢幕對角線英寸數 
dp*ppi/160 = px。比如1dp x 320ppi/160 = 2px。

疑問:dpi和ppi是不是數值等同的?為何文件中的計算方式對不上?

劃分標準

Google官方指定的dpi區分標準(第1列和第2列):

名稱 畫素密度範圍 螢幕密度 圖片icon尺寸
drawable-ldpi ppi=120-160 density=0.75 36*36
drawable-mdpi ppi=160-240 density=1(baseline) 48*48
drawable-hdpi ppi=240-320 density=1.5 72*72
drawable-xhdpi ppi=320-480 density=2 96*96
drawable-xxhdpi ppi=480-640 density=3 144*144
drawable-xxxhdpi ppi=640-800 density=4 192*192

* 小規律:比值(各種螢幕密度的比值) 
ldpi:mdpi:hdpi:xhdpi:xxhdpi:xxxdpi = 0.75:1:1.5:2:3:4 = 3:4:6:8:12:16, 
這個比值乘以12就得到對應螢幕密度手機桌面icon圖示大小

Android手機常見尺寸和對應解析度

  • 摘自網路,有待驗證。
4:3 尺寸 對應解析度
VGA 640*480 (Video Graphics Array) -
QVGA 320*240 (Quarter VGA) -
HVGA 480*320 (Half-size VGA) mdpi
SVGA 800*600 (Super VGA) -
5:3 尺寸 對應解析度
WVGA 800*480 (Wide VGA) hdpi
16:9 尺寸 對應解析度
FWVGA 854*480 (Full Wide VGA) hdpi
HD 1920*1080 High Definition -
QHD 960*540 hdpi
720p 1280*720 xhdpi
1080p 1920*1080 xxhdpi

部分Android測試機分析

   在專案開發過程中,遇到螢幕很大的手機,結果顯示的圖示卻很小,和預期不一致,例如華為機型MT1-U06。
   原因是:真機螢幕的ppi會取和谷歌標準最相近的標準ppi,然後density按照最相近的ppi來定。

以谷歌的標準,按安卓螢幕寬度為例,一般來說480px對應的density是1.5(也就是hdpi)對應320dp,720px對應的density是2.0(也就是xhdpi)對應360dp,1080px對應的density是3.0(也就是xxhdpi)對應360dp;

如果非要拿螢幕ppi說事的話,就是這樣,以160ppi為基準,160ppi對應的density是1.0,240ppi對應的density是1.5,320ppi對應的density是2.0…

部分機型螢幕尺寸、解析度計算:

  • 三星Note5 ,主屏尺寸:5.7英寸,2560×1440畫素,測試為xxdpi 
    • ppi = √(長度畫素數² + 寬度畫素數²) / 螢幕對角線英寸數 = √(2560² + 1440²) / 5.7=√ 6553600 + 2073600 /5.7 = √ 8627200 /5.7 = 2937.2 /5.7 =515.3
    • density = dpi/160 = 515.3/160 = 3.22
  • 摩托諾拉Nexus6 ,主屏尺寸:5.96英寸,2560×1440畫素,測試為xxdpi 
    • ppi = √(長度畫素數² + 寬度畫素數²) / 螢幕對角線英寸數 = √(2560² + 1440²) / 5.96 =√ 6553600 + 2073600 /5.96 = √ 8627200 /5.96 = 2937.2 /5.96 =492.8
    • density = dpi/160 = 492.8/160 = 3.08
  • 一加A1001 ,主屏尺寸:5.5英寸,1920×1080畫素,測試為xxdpi 
    • ppi = √(長度畫素數² + 寬度畫素數²) / 螢幕對角線英寸數 = √(1920² + 1080²) / 5.5 =√ 3686400 + 1166400 /5.5 = √ 4852800 /5.5 = 2202.9 /5.5 =440.6
    • density = dpi/160 = 440.6/160 = 2.75
    • 就近原則,對應dpi為xxdpi,與測試結果一致
  • Nexus 5,螢幕尺寸是4.95英寸,解析度是1920×1080畫素(FHD),測試為xxdpi 
    • ppi = √(長度畫素數² + 寬度畫素數²) / 螢幕對角線英寸數 =2202.9 /4.95 =445
    • density = dpi/160 = 445/160 = 2.78
    • 同理,就近原則,對應dpi為xxdpi,與測試結果一致
  • 紅米note2 ,主屏:5.5英寸,1920x1080畫素,但是測試時選擇了xdpi 
    • ppi同一加A1001,本應選擇xxdpi,測試卻是xdpi
    • 所以,有不確定性
  • 華為MT1-U06,螢幕6.1英寸(機身尺寸:64.8*129*7.69mm),畫素1280×720px;對應hdpi 
    • ppi = √(長度畫素數² + 寬度畫素數²) / 螢幕對角線英寸數 = √(1280² + 720²) / 6.1 =√ 1638400 + 518400 /6.1 = √ 2156800 /6.1 = 1468.6 /6.1 =240.75
    • density = dpi/160 = 240.75 /160 = 1.5
    • 這個數值,剛剛好是hdpi!
  • 三星galaxy s4 ,主屏:5英寸,1920x1080畫素,xxdpi 
    • ppi = √(長度畫素數² + 寬度畫素數²) / 螢幕對角線英寸數 =2202.9 /5 =440.6
    • density = dpi/160 = 440.6/160 = 2.75
    • 同理,就近原則,對應dpi為xxdpi,與測試結果一致

回到本節開頭的疑惑

   所以,你以為那麼大螢幕怎麼著是xxhdpi,結果呢?人家只是hdpi。。。所以,螢幕大,真心說明不了神馬啊

補充.9圖的使用說明

9.png格式的圖片是Android平臺上新創的一種被拉伸卻不失真的東東。

.9格式的圖片佔用資源很小,一般一個幾KB或者幾十KB的圖片會變成幾百個位元組,有利於節省流量和提高載入速度。 注意圖片尺寸定義: .9格式的圖片四周不普通的png圖片相比多了一個畫素位的白色區域,該區域只有在圖片被還原和製造的時候才能看到,當打包後無法看見,並且圖片的總畫素會增大2個畫素,比如23x23畫素的9.png圖片被打包後會變成25x25畫素。所以我們在製作的時候要注意掌握尺寸。

.9圖上下左右黑邊的含義: 
上黑色條位置向下覆蓋的區域表示圖片橫向拉伸時,只拉伸該區域; 
左黑色條位置向右覆蓋的區域表示圖片縱向拉伸時,只拉伸該區域; 
右黑色條位置向左覆蓋的區域表示圖片縱向顯示內容的區域; 
下黑色條位置向上覆蓋的區域表示圖片橫向顯示內容的區域; 
四角沒有黑色條的位置覆蓋的區域是圖片拉伸時保持不變(如果圖片的四角為弧形時,四角弧形均不變)。 
簡言之,上和左控制拉伸,必須設定;右和下控制內部顯示區域,可選。


相關推薦

()[整理]Android螢幕(不同螢幕解析度尺寸)

原地址:http://blog.csdn.net/ttkatrina/article/details/50623043 Android螢幕適配 目錄: 在實際開發過程中,會遇到不同的機型,為了讓控制元件和佈局要在不同螢幕上顯示相近的樣子,就得在drawab

[整理]Android螢幕(不同螢幕解析度尺寸)

Android螢幕適配 目錄: 在實際開發過程中,會遇到不同的機型,為了讓控制元件和佈局要在不同螢幕上顯示相近的樣子,就得在drawable-ldpi/mdpi/hdpi/xhdpi/xxhdpi不同的資料夾下放置圖片素材或者在xml中用dp作為間距單

Android螢幕(不同螢幕解析度尺寸)

http://blog.csdn.NET/ttkatrina/article/details/50623043 http://blog.csdn.net/ttkatrina/article/details/50623043 http://blog.csdn.Net/ttkatrina/arti

Android 不同螢幕(手機,平板)

如果程式能夠根據裝置的解析度或者螢幕的大小在執行時來決定載入那個佈局,那我們發揮的空間就更多了。因此本節我們就來探討Android中動態載入佈局,限定符的使用: layout-large layout-sw600dp layout-large

一步步教你使用rem不同螢幕的移動裝置

本文轉載自:https://www.cnblogs.com/dannyxie/p/6640903.html 感謝分享 1.先說說幾個前端常用的幾個單位的概論: 1、px (pixel,畫素):是一個虛擬長度單位,是計算機系統的數字化影象長度單位,如果px要換算成物理長度,需要指定精度

整理Android螢幕相關

重要概念 螢幕尺寸 螢幕尺寸指螢幕的對角線的長度,單位是英寸(inch),1英寸=2.54釐米 例如我們經常說的手機螢幕大小有,5(英)寸、4(英)寸就是指這個單位。這些尺寸是螢幕的對角線長度

android螢幕(三)實踐dimens.xml尺寸不同的平板

android3.2以後,為了提供更精準的對佈局檔案的控制,可以通過為資原始檔(res目錄下檔案)增加字尾來指定該資料夾裡的xml佈局檔案或color.xml,string.xml是為哪種大小的螢幕使用。 第一種字尾:sw<N>dp,如layout-sw600

Android 最全不同語言、螢幕、系統版本及常見方法

前言 全世界安卓智慧手機語言不相同,由於各廠家生產出的系統、螢幕也各異,隨著SDK不斷更新不同版本也有區別,android適配技能日益成為必不可少的一項專業技能。根據網上的資料和個人經驗總結,整理一份目前比較完整的適配大全,有疏漏之處還望指正。 一、適配不同國家語言 智慧手

【最新】Android 手機解析度整理(做螢幕的拿走)

Android 手機解析度:320x480    320x400480x800    480x854540x960600x1024720x1184    720x1196    720x1280768x1024    768x1280800x12801080x1776   

Android-螢幕全攻略()

2012年到2014年支援Android裝置的種類從3997增長到18796。同時各大廠商定製的螢幕尺寸也非常多。這將非常不利於我們進行螢幕適配。這要求我們必須掌握螢幕適配技能,以便使我們的app可以適用於不同螢幕尺寸的裝置上。 從上圖可以看出,主流的解析度是前六種:128

Android 螢幕方案,自動生成不同解析度的值

1、概述 大家在Android開發時,肯定會覺得螢幕適配是個尤其痛苦的事,各種螢幕尺寸適配起來蛋疼無比。如果我們換個角度我們看下這個問題,不知道大家有沒有了解過web前端開發,或者說大家對於網頁都不陌生吧,其實適配的問題在web頁面的設計中理論上也存在,為什麼這麼說呢

Android 不同尺寸螢幕採用自動縮放完美解決

轉自:http://blog.csdn.net/ljh102/article/details/45536293 做過安卓開發的都知道,螢幕適配是一件非常困難的事情。 Google官方的解決方案:screens_support 需要寫多個layout檔案以及dimens.xm

Android 螢幕工具類,自動生成不同解析度的值

DimenTool Android 螢幕適配方案,自動生成不同解析度的值 android中官方建議的螢幕適配方式,通過根據不同的解析度在工程的res資料夾下建立不同的尺寸資料夾,每個資料夾下都建立dimens.xml檔案。然後根據不同的尺寸在dimens

Android 不同解析度螢幕的實戰方案與經驗總結

Android 開發中,螢幕適配是一大考點,幾乎每一場面試,都不會落下這個問題,這個問題說簡單也簡單,說難也難,當然對於有過真實的適配經驗的人來說,這個根本不算什麼問題,從坑裡爬過的人,自然知道這其中的水深水淺,哈哈。今天總結分享下自己在專案中關於螢幕適配的一些

Android 開發:(九)Android螢幕經驗談

1.名詞解釋 螢幕尺寸: 也就是我們平時所說的某某手機是幾寸屏, 比如HTC one V這款手機是3.7寸的, 這裡的寸說的是英寸(inch),國際上習慣使用的單位,1inch = 2.54cm,3.7寸指的是螢幕的對角線的長度。 螢幕解析度:

Android 螢幕之 dimens

相信做手機端的 App 的小夥伴,只要是產品稍微大一點,就會面臨螢幕適配的問題,對於適配這個問題,網上眾說紛紜,以前雖然有零零散散的看過,但是沒有實踐過,也是在最近遇到這個需求的情況下才研究了一下,現在做個記錄。 1 參考連結 http://blog.csdn.net/qq_341

Android中dp px sp概念梳理以及如何做到螢幕

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Android螢幕詳解

本篇文章將解釋什麼是螢幕適配,為什麼要螢幕適配,螢幕適配的本質,和如何解決螢幕適配上的問題。(小白也能看懂哦) 什麼是螢幕適配?     螢幕適配就是讓某一個元素或者是APP中的UI介面在不同解析度、不同尺寸的螢幕上展示出同樣的顯示效果,這就是螢幕適配。 為什麼要

螢幕——系統升級android 8.0 部分UI出現錯亂——“可用螢幕解析度

這兩天將自己的mate9從7.0升級到8.0發現一個問題,app的某個ui介面部分錯亂了;因為螢幕適配使用了dimens適配,所以猜測有可能螢幕規格沒有覆蓋到;但是發現mate9的螢幕解析度為1920*1080,查看了dimens檔案是有覆蓋的,為什麼7.0時候沒有問題,升級到8.0出現

dimens-Android非常簡單非常好用的螢幕

為什麼要進行Android螢幕適配? 關於為什麼要進行Android螢幕適配,什麼是dp、dpi這些概念我就不去一一講解了,網上很多文章。這裡我推薦幾篇講的比較好的: Android螢幕適配全攻略(最權威的官方適配指導) Android 螢幕適配:最全面的解決方案 Andr