Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android多屏適配教程

Android多屏適配教程

編輯:關於Android編程

相信有不少開發者對於dp/sp/px,這些概念比較模糊,本文將講解其含義和用途。

基本概念

  • px: 像素(pixel),設備上的物理像素點。
  • dp:跟dip是同一個概念,與屏幕物理像素點無關,而是基於屏幕密度抽象單位,被稱作“設備獨立像素”,會隨著屏幕的密度進行自動的大小調整。
  • sp: 專用於文字大小的設置,可根據字體大小首選項進行縮放。
  • inch: 英寸,1英寸 = 2.54厘米。
  • dpi: 屏幕像素密度, 單位英寸上像素點的數量。
  • 分辨率: 是指橫縱方向上的像素點數,單位是px。一般是縱向像素*橫向像素,比如1920 * 1080
  • 屏幕尺寸: 屏幕對角線的長度,單位是inch。比如我們平時常說的5寸手機,是指手機屏幕的對角線長度為5英寸。

轉換關系

常見尺寸表

level dpi scale resolution ldpi 120 0.75 320*240 mdpi 160 1 480*320 hdpi 240 1.5 800*480 xhdpi 320 2 1280*720 xxhdpi 480 3 1920*1080 xxxhdpi 640 4 2560*1440

說明:

  • google官方用的詞是approximately,比如ldpi是值近似等於120dpi;
  • 分辨率列只是比較有代表性的而已,但設備的dpi,還需要根據相應的設備尺寸來計算。同一分辨率,設備尺寸越大,那麼dpi就越小,單位英寸上像素點越稀疏。

換算公式

android.util.TypedValue類提供了一個函數,提供所有單位與px的換算關系。

  • dpi如何計算? dpi,英文全稱dot per inch,是指每英寸上的像素點個數。 計算公式:dpi=√(X²+Y²)/Z (其中 X:縱向的像素個數;Y:橫向的像素個數;Z:屏幕尺寸)

  • scale是如何計算的? 定義以160dpi作為基准,當前設備的dpi/160dpi = scale值。也就是當設備的dpi為160時1dp=1px.

  • dp與px如何轉換? 計算公式:pxs = dps * (dpi/160), 比如:320dpi的設備,10dp轉換為px為 10 *(320/160)px = 20 px,即320dpi下10dp=20px.

  • 1dp到底等於多長呢? 假設設備的dpi=320, 是指320px對應的長度為1英寸, 那麼1px=1/320 英寸。再根據前面的公式, 1dp = (320/160) px = 2px。故1dp對應的長度為2 * (1/320)英寸,即1/160英寸。 同理,假設設備的dpi =N,那麼1dp = (N/160) px = (N/160) * (1/N) inch = 1/160 inch,再加上前面提到的近似,可以得出結論為1dp約等於1/160英寸


多屏適配

適配原則

  • layout中,最好采用wap_content, fill_parent,dp,可保證在屏幕上有合適的大小;
  • 像素單位使用dp, 文字單位使用sp;
  • 程序代碼中不要出現具體的px;
  • 圖片應多使用.9.png;
  • 使用百分比布局;

適配方法

  • 查看不同分辨率的設備市場占有率,分析出需要支持的設備分辨率:
    • http://screensiz.es
    • http://opensignal.com/reports/2015/08/android-fragmentation
  • 對不同大小的屏幕提供不同的layout;
  • 對不同密度的屏幕提供不同的圖片;
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved