簡體   English   中英

Android - dp 如何在不同尺寸的設備中占據不同的空間?

[英]Android - How does dp occupy different space in devices with different sizes?

我搜索了很多關於 dp、px、inch、pt 等的信息。

從我對“dp”的理解來看:

指定 'dp' 只是一種讓 Android 為不同屏幕密度的設備繪制相同大小視圖的方法。 例如,對於中等密度的設備,每個“dp”將占據一個像素。 對於高密度設備 - 它具有較小的像素以每英寸容納更多像素,'dp' 將占用超過一個像素。 對於低密度設備 - 它具有較大的像素以適應每英寸較少的像素,'dp' 將占用不到一個像素。

但我還了解到,“dp”占用的空間因屏幕尺寸而異,即對於小屏幕,“dp”將占用更少的空間,而對於更大的屏幕,“dp”將占用更大的空間。 這究竟是怎么發生的? 根據我對“dp”的理解,它應該在不同屏幕尺寸的設備中占據相同的空間。 例如,240 dpi 的大屏幕將有一個 'dp' 占據 1.5 像素,240 dpi 的小屏幕也是如此。 那么一個“dp”怎么會在不同的屏幕尺寸下占據不同的空間呢?

我對“dp”的理解缺少什么? 請幫忙。

在 Android 操作系統上,獨立於設備的像素相當於 160 dpi 屏幕上的一個物理像素。 通過這個定義,你可以理解 dp 與屏幕尺寸沒有關系,因為比例已經固定為 160 dpi。

.

Android 定義了160的基准 dpi,用作計算所有屏幕密度的尺寸的參考

pixel_size * (device_dpi / baseline_dpi) = result in "dp" units

>> or the other way around 

dp_size / (device_dpi / baseline_dpi) = result in "pixel" units

因此,240dpi 設備中的 1 個像素相當於 1.5dp 單位:

1 * (240 / 160) = 1.5

反之亦然,240dpi 設備中的 1.5dp 單位相當於 1 個像素

1.5 / (240 / 160) = 1

要知道的重要事實是, 160是用作所有 DPI參考的基線。 因此,隨着 dp 單位的增加/減少,無論設備屏幕如何,繪制內容所需的像素區域都會轉化為保持相同的大小比例。

更多信息請參見官方文檔

更清楚一點:

顯示大小與“dp 單位”無關。 顯示大小就是顯示畫布的大小。 屏幕 DPI 定義了 1 平方英寸可容納多少點。 並且“dp 單位”是一個抽象單位,根據設備的 DPI,通過使用 160 作為基准參考,縮放(向上或向下)以在任何屏幕尺寸上提供“統一尺寸”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM