flutter大小单位:dp

手机的屏幕使用点来表示。例如,手机分辨率为720×1280,代表

  • 分辨率为720×1280:宽为720个点,高为1280个点。
  • dpi为320:每英寸物理屏幕上的点个数为320个点。

160dpi的手机每英寸有160个点,320dpi的手机每英寸有320个点。于是,320dpi的每个点的尺寸是160dpi每个点的一半。即320dpi的设备,每个点的尺寸更小。
于是,一个5寸的160dpi手机宽为360个点,则5寸的320dpi手机宽就有720个点。
也就是说,若物理尺寸相同,则dpi增大,意味着分辨率(点数)要对应增大。

有两个手机:

  1. 手机A:屏幕为160dpi,物理尺寸为5寸。分辨率宽为360点。
  2. 手机B:屏幕为320dpi,物理尺寸为5寸。分辨率宽为720点。

一张图片,在手机A上宽为36点。于是该图片占用屏幕比例为10%。
在手机B上显示,为了效果相同,则必须占用屏幕比例也为10%。于是在手机B上宽为720×10%=72。也就是72个点。
为了开发时统一,定义一个单位dp:屏幕为160dpi时,1个点就是1dp。
当屏幕为320dpi时,320/160=2,即2个点为1dp。
这样,将上面图片的宽设为72dp,在手机A和手机B上显示,所占屏幕比例都是10%。

因此,已知手机的分辨率为W×H,dpi为D,则:

  • 1dp所占点数 = D/160
  • 屏幕宽dp数 = W/1dp所占点数

例:已知手机的分辨率为540×960,dpi为240,则:

  • 1dp所占点数 = 240/160 = 1.5个点
  • 屏幕宽dp数 = 540/1.5 = 360dp

所以,屏幕宽度有360个dp。此时将一张图片设宽度为72dp,则该图片占屏幕宽度为20%。

flutter的大小单位默认为dp。

发布了215 篇原创文章 · 获赞 51 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/fyyyr/article/details/88547473
今日推荐