Android的px、dp和sp

Android的px、dp和sppx:即像素,1px代表屏幕上一个物理的像素点;偶尔用到px的情况,是需要画1像素表格线或阴影线的时候。dp:这个是最常用但也最难理解的尺寸单位。它与“像素密度”密切相

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

Android的px、dp和sp
px:

即像素,1px代表屏幕上一个物理的像素点;偶尔用到px的情况,是需要画1像素表格线或阴影线的时候。

dp:

这个是最常用但也最难理解的尺寸单位。它与“像素密度”密切相关,所以首先我们解释一下什么是像素密度。假设有一部手机,屏幕的物理尺寸为1.5英寸x2英寸,屏幕分辨率为240×320,则我们可以计算出在这部手机的屏幕上,每英寸包含的像素点的数量为240/1.5=160dpi(横向)或320/2=160dpi(纵向),160dpi就是这部手机的像素密度,像素密度的单位dpi是Dots Per Inch的缩写,即每英寸像素数量。横向和纵向的这个值都是相同的,原因是大部分手机屏幕使用正方形的像素点。
不同的手机/平板可能具有不同的像素密度,例如同为4寸手机,有480×320分辨率的也有800×480分辨率的,前者的像素密度就比较低。Android系统定义了四种像素密度:低(120dpi)、中(160dpi)、高(240dpi)和超高(320dpi),它们对应的dp到px的系数分别为0.75、1、1.5和2,这个系数乘以dp长度就是像素数。

dip:

与dp完全相同,只是名字不同而已。在早期的Android版本里多使用dip,后来为了与sp统一就建议使用dp这个名字了。

sp:

与缩放无关的抽象像素(Scale-independent Pixel)。sp和dp很类似但唯一的区别是,Android系统允许用户自定义文字尺寸大小(小、正常、大、超大等等),当文字尺寸是“正常”时1sp=1dp=0.00625英寸,而当文字尺寸是“大”或“超大”时,1sp>1dp=0.00625英寸。

mm:

即毫米;

in:

即英寸,1英寸=2.54厘米(约);
pt:

1pt=1/72英寸=0.035厘米;

最佳实践,文字的尺寸一律用sp单位,非文字的尺寸一律使用dp单位。http://hovertree.com/menu/android/

dp与px转换的方法:

public static int dip2px(Context context, float dipValue){   final float scale = context.getResources().getDisplayMetrics().density;   return (int)(dipValue * scale +0.5f); }
public static int px2dip(Context context, float pxValue){   final float scale = context.getResource().getDisplayMetrics().density;   return (int)(pxValue / scale +0.5f); }

推荐:http://www.cnblogs.com/roucheng/p/androidjiqiao.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120465.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 基于云平台的物联网架构和原理设计_物联网的架构

    基于云平台的物联网架构和原理设计_物联网的架构基于云平台的物联网架构和原理云的服务架构云计算是通过各种技术手段服务客户的一种方式,包括三层服务模式,即最底层的IaaS(基础设施即服务),中间层的PaaS(平台即服务),和顶层的SaaS(软件即服务)。IaaS:最底层,为客户提供基础设施资源,包括计算、存储、网络等,这是构建云平台和云应用的硬件支撑,同时它本身作为一种服务,面向使用者(如单纯的存储数据)和开发者(如使用服务器)。P…

    2022年9月17日
  • windows7未能连接一个windows服务(无法连接网络)的解决方法

    windows7未能连接一个windows服务(无法连接网络)的解决方法今天下午不知道怎么搞的,就搞的无线不可以用了,出现了个 “windows7未能连接一个windows服务”问题,而且连eclipse都打不开了。晚上在网上找了一个方法,终于搞定了。方法:是重新安装了下360,然后它自动检测出来要修复LSP文件,然后就点击,再重启后就搞定了。下面这篇文章可能也有用:http://iecspace.ecjtu.org/posts/connect-to-w

    2022年5月14日
  • 11条javascript知识

    1.局部变量和全局变量var操作符定义的变量将成为定义该变量作用域中的局部变量。这个局部变量会在函数退出后销毁。不同于其他语言,javaScript不存在块级作用域。全局变量就是window对象的属性

    2021年12月20日
  • Java内存映射原理与实现

    Java内存映射原理与实现Java虚拟机规范中定义了Java内存模型(JavaMemoryModel,JMM),用于屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的并发效果,JMM规范了Java虚拟机与计算机内存是如何协同工作的:规定了一个线程如何和何时可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同步的访问共享变量。

    2022年6月21日
  • python merge函数_pandas replace函数

    python merge函数_pandas replace函数在pandas中如果我们想将两个表格按照某一主键合并,我们需要用到merge函数。pd.merge(dataframe_1,dataframe_2,how=”inner”)参数how有四个选项,分别是:inner、outer、left、right。inner是merge函数的默认参数,意思是将dataframe_1和dataframe_2两表中主键一致的行保留下来,然后合并列。outer是相对于inner来说的,outer不会仅仅保留主键一致的行,还会将不一致的部分填充Nan然后保留下来。

    2022年10月23日
  • android获取屏幕像素密度DPI,与density

    android获取屏幕像素密度DPI,与density基本概念:dip:Densityindependentpixels,设备无关像素。dp:就是dipdpi:dotsperinch,直接来说就是一英寸多少个像素点。常见取值120,160,240。我一般称作像素密度,简称密度density:直接翻译的话貌似叫密度。常见取值1.5,1.0。和标准dpi的比例(160px

    2022年6月3日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号