首页 > 编程知识 正文

dp,dp与px

时间:2023-05-03 17:57:39 阅读:21864 作者:1508

DP(dip ) :设备独立像素) .显示效果因设备而异。 这与设备硬件有关。 一般来说,为了支持WVGA、HVGA、QVGA,建议使用此选项。 与像素无关。 px :像素。 虽然某些设备的显示效果相同,但HVGA通常表示320x480像素。 这个被使用得很多。 pt: point是标准长度单位,1pt=1/72英寸,用于打印行业,非常简单易用的sp: scaled pixels .主要用于文本大小的最佳显示。 因此,根据谷歌的建议,TextView的大小最好以sp为单位使用。 另外,从TextView的源代码中可以看到,Android默认使用sp作为大小单位。

另外,谷歌代码中使用的所有单位都是以px为默认单位。

在apk资源包中,在画面density=240时使用hdpi标签的资源

如果屏幕density=160,则使用mdpi标记的资源

如果屏幕density=120,则使用ldpi标记的资源。

对于每英寸160点的显示器,1dp=1px。

以下是几个不同单位的相互转换。

publicstaticintdip 2px (上下文上下文,floatdipvalue (finalfloatscale=context.get resources ).getDisplayMetrics ) )。 返回(int ) ) dipValue * scale 0.5f; } publicstaticintpx 2d IP (上下文上下文,浮动px值) finalfloatscale=context.get resource ).getDisplayMetrics )。 返回(int ) ) pxValue/scale 0.5f; } publicstaticintdip 2px (上下文上下文,浮动dip value ) finalfloatscale=context.get resources ).getdisplaymetrics returures } publicstaticintpx 2d IP (上下文上下文,浮动px值) finalfloatscale=context.get resource ).getDisplayMetrics )。 返回(int ) ) pxValue/scale 0.5f; }

说明如何获取分辨率:

在Activity的onCreate方法中写入以下代码: displaymetricsmetric=newdisplaymetrics (; getWindowManager ().getDefaultDisplay ) (.getmetrics ) ) metric; int width=metric.widthPixels; //屏幕宽度(像素) int height=metric.heightPixels; //屏幕高度(像素) float density=metric.density; //屏幕密度(0.75/1.0/1.5 ) intdensitydpi=metric.density dpi; //屏幕密度dpi(120/160/240 ) )。

在Android中,1pt约等于2.22sp

参考以上内容,如果UI能够以sp为单位提供设计就最好了,但如果设计中没有sp的概念,开发人员也可以通过适当的换算来获取近似值。 传统上,程序员以像素为单位设计计算机用户界面。 定义宽度为300像素的表单域,例如,列之间的间距为5像素,图标大小为1616像素。 这样的问题是,在每英寸点数(dpi )更高的新显示器上运行程序时,用户界面看起来很小。 在某些情况下,用户界面可能很难看到内容。 这个问题可以用与分辨率无关的测量单位来解决。

Android支持以下所有单位: px (像素) :屏幕上的点。 英寸:长度单位。 毫米(毫米)长度单位。 pt )磅(1/72英寸)。 dp (独立于密度的像素) :基于屏幕密度的抽象单位。 对于每英寸160点的显示器,1dp=1px。 dip :与DP一样,在android/ophone示例中经常使用。 sp )独立于刻度的像素(类似于dp,但可以根据用户的字体大小首选项进行缩放。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。

  •  标签:  
  • dp   px