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

Android螢幕適配(不同的螢幕解析度和尺寸)

http://blog.csdn.NET/ttkatrina/article/details/50623043

http://blog.csdn.net/ttkatrina/article/details/50623043

http://blog.csdn.Net/ttkatrina/article/details/50623043

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…

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

  • 一加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 http://blog.csdn.net/ttkatrina/article/details/50623043 http://blog.csdn.Net/ttkatrina/arti

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

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

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

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

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

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

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

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

關於螢幕不同解析度的圖片 字型大小

首先 新建兩個資料夾 一個是大解析度的格式 一個是小的 例如:values-720x1080 和 values-480x800 //新建出來的 資料夾在哪找? //就能發現你的資料夾 //然後兩個不同的解析度 每一個解析度裡都有一個xml檔案,這裡展示一個字型大小的檔案 大解析度

Android-- UI 佈局,螢幕解析度相容版本相容,螢幕解決方案

這篇文章主要是對解決螢幕適配問題思路的總結,會比較抽象,以後逐步把每條步驟對應的【案例】總結上去。 A: 拋開【業務需求】,螢幕適配解決方案的本質是:1.動態控制控制元件的尺寸,2.動態控制檢視佈局。 - 1.動態控制控制元件的尺寸:巧妙結合

Android常見解析度(mdpi、hdpi 、xhdpi、xxhdpi )尺寸單位轉換螢幕相關

一:Android 螢幕適配 眾所周知,Android機型尺寸各種各樣,於是螢幕適配就成了Android開發中很重要的一環。Android螢幕適配可能一些開發者都會遇到這樣的問題,今天就來分享下螢幕適配,其實Android螢幕適配也可以很簡單。 基本概念 Android螢幕適配必須要理解的一些概念:

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

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

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

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

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

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

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

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

Android Camera 自動多種螢幕,解決預覽照片拉伸儲存的圖片拉伸

最近公司需要做一個手機自拍照的功能,由於之前有做過類似手機拍照的功能,所以很快就實現了自定義手機拍的功能。但是後面發現部分手機出現預覽照片拉伸和儲存的圖片拉伸的情況。然後百度了一下,發現原理很好理解,也有一堆demo,然而並沒有解決拉伸的情況。下面總結一下我的解決方法,希望對

螢幕:dp、px、ppi、sp、手機尺寸解析度之間的關係

DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int screenWidthPx = dm.widthPixels; int

css不同解析度螢幕

如今的螢幕解析度,小至320px(iPhone),大到2560px甚至更高(大顯示器),變化範圍極大。除了使用傳統的桌上型電腦,使用者會越來越多的通過手機、上網本、iPad一類的平板裝置來瀏覽頁面。這種情況下,固定寬度的設計方案將會顯得越發不合理。頁面需要有更好的適應性,其佈

Android 常見解析度(mdpi、hdpi 、xhdpi、xxhdpi )及螢幕注意事項

1 Android手機目前常見的解析度 1.1 手機常見解析度: 4:3 VGA     640*480 (Video Graphics Array) QVGA  320*240 (Quarter VGA) HVGA  480*320 (Half-size VGA)

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

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

僅僅是個人記錄:Android 的機型螢幕(包括dpi,dp,sp的概念) 版本 硬體。 以及如何美工配合

最重要的適配就是尺寸適配,我們可以有兩種方案: 第一種方案,以某一個尺寸,例如1920*1080為基準的,在檔案中修改 http://blog.csdn.net/lmj623565791/article/details/45460089         int baseW

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

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

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

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