android中像素单位dp、px、pt、sp的比较

dp(dip): device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。


px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。


pt: point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用;


sp: scaled pixels(放大像素). 主要用于字体显示best for textsize。


由此,根据 google 的建议,TextView 的字号最好使用 sp 做单位,而且查看TextView的源码可知 Android 默认使用 sp 作为字号单位。




还有, google代码里边所用的单位都是以px为默认单位的.




apk的资源包中,当屏幕density=240时使用hdpi标签的资源


当屏幕density=160时,使用mdpi标签的资源


当屏幕density=120时,使用ldpi标签的资源。


在每英寸160点的显示器上,1dp = 1px。




下面是几种不同单位的相互转换.




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); 

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); 
}


下面说下如何获取分辨率:


    在一个Activity的onCreate方法中,写入如下代码:
        DisplayMetrics metric = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metric);
        int width = metric.widthPixels;  // 屏幕宽度(像素)
        int height = metric.heightPixels;  // 屏幕高度(像素)
        float density = metric.density;  // 屏幕密度(0.75 / 1.0 / 1.5)
        int densityDpi = metric.densityDpi;  // 屏幕密度DPI(120 / 160 / 240)






 


在 Android 中,  1pt 大概等于 2.22sp


以上供参考,如果 UI 能够以 sp 为单位提供设计是最好的,如果设计中没有 sp的概念,则开发人员也可以通过适当的换算取近似值。


过去,程序员通常以像素为单位设计计算机用户界面。例如,定义一个宽度为300像素的表单字段,列之间的间距为5个像素,图标大小为16×16像素 等。这样处理的问题在于,如果在一个每英寸点数(dpi)更高的新显示器上运行该程序,则用户界面会显得很小。在有些情况下,用户界面可能会小到难以看清 内容。与分辨率无关的度量单位可以解决这一问题。


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/286571.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ArcGIS10.8完美实现MODIS NDVI数据格式转换和投影变换

大家都熟知,MODIS NDVI数据的处理一般是在MRT中进行的,但熟不知ArcGIS中也可以实现投影变换个数据格式的转换,本文就以MOD13Q1.A2020001.h26v05.006.2020018002618.hdf这一景影像为例,实现将正弦曲线投影转换为Albers等积投影,将hdf格式转为tif。 ArcGIS python批处理代码…

开源项目千千万,如何发现好项目

视频来自 OSSInsight 推特。不知道大家听说没有 PingCAP 推出的一个 OSSInsight.io 网站,可以根据 GitHub 上的事件,提供开源软件洞察,这个项目也开源在 GitHub[1] 上。它可以提供以下方面的洞察能力,有点类似于 Google Analytics…

Git之回退已经提交到远程仓库的代码(已经push的代码)

1 问题 git 把当前的修改已经push到远程仓库,现在需要回退这个远程提交 2 解决办法 1)、我们用git log命令找到commit Id d6434e39e842a40b79119b2b88e76dd1498f8654是我最后一次提交, 然后我们现在需要回退到145c4fc7f237176acba1bca515e9…

构建微型数据中心——在laptop上运行Rancher

对于开发人员而言,他们的最终目标是拥有自己的数据中心(data center),使他们能够在贴近真实情况的副本上测试他们的服务。然而,开发人员的开发过程中却充满了妥协。因为,数据要么是个简化集,要么…

【前端就业课 第一阶段】HTML5 零基础到实战(五)基础元素

注意:手机(APP)打开,内容显示更佳,不会的私聊博主即可(知识点结构参考《HTML5入门到精通》) 想要拿代码或加入学习计划(** 博主会监督你并且教你写文章 **)的拉到最下面&…

phpUnit 安装,实例和简单部署

背景:一个小脚本,保证稳定为主;所以试用了下phpunit,快捷方便phpunit 的安装 phpunit是一个轻量级的php单元测试框架,通过pear安装安装过程 wget https://phar.phpunit.de/phpunit.phar chmod x phpunit.phar sudo mv …

1、RN跨平台开发——环境搭建

了解React NativeReact Native使你能够在Javascript和React的基础上获得完全一致的开发体验,构建世界一流的原生APP。React Native着力于提高多平台开发的开发效率 —— 仅需学习一次,编写任何平台。(Learn once, write anywhere)。Facebook已经在多项产…

Android之替换App桌面图标

1、需求 需要动态替换app在桌面的图标 2、解决办法 1)、在AndroidManifest.xml里面进行配置多个启动的alias别名 启动的activity <activityandroid:name=".ui.SplashActivity"android:launchMode="singleTop"android:screenOrientation="port…

【ArcGIS遇上Python】ArcGIS10.8 Python代码批量完美实现MODIS NDVI数据格式转换和投影变换

由于论文的需要,将MODIS NDVI数据进行投影变换和格式转换,具体操作可以参照:《ArcGIS10.8完美实现MODIS NDVI数据格式转换和投影变换》,但是该文章中的做法只能一次性实现一景影像的转换,没法批量,虽然ArcGIS中提供了Batch的方法但是需要挨个添加数据,确定输出路径等等,…

引入 DTM 以支持 ABP 的多租户多数据库场景

这篇文章分享了使用 DTM 二阶段消息模式解决 issue #10036 的方法。今天我们要使用 EasyAbp 的 Abp.EventBus.Boxes.Dtm 模块。DTM 事件箱的介绍这个模块使用了 DTM 的 二阶段消息 使得 ABP 的事件箱得以支持 多租户多数据库场景。你需要先阅读 DTM 文档&#xff0c;它将帮助你…

【前端就业课 第一阶段】HTML5 零基础到实战(六)表格详解

注意&#xff1a;手机&#xff08;APP&#xff09;打开&#xff0c;内容显示更佳&#xff0c;不会的私聊博主即可 想要拿代码或加入学习计划&#xff08;** 博主会监督你并且教你写文章 **&#xff09;的拉到最下面&#xff08;PC端Web打开&#xff09;加博主即可&#xff0c;目…

PHP中file_put_contents()函数的兼容性问题

PHP中file_put_contents()函数的兼容性问题 file_put_contents()函数就相当于依次使用fopen()&#xff0c;fwrite()和fclose()&#xff0c;真是个令人愉快的函数。我的第一个PHP小脚本中用到了这个函数&#xff0c;本地运行很正常&#xff0c;放到服务器上去之后点击submit按钮…

Android实战:手把手实现“捧腹网”APP(一)-----捧腹网网页分析、数据获取

“捧腹网”页面结构分析捧腹网M站地址: http://m.pengfu.com/捧腹网M站部分截图&#xff1a; 从截图中&#xff08;可以直接去网站看下&#xff09;&#xff0c;我们可以看出&#xff0c;该网站相对简单&#xff0c;一共分为四个模块&#xff1a;最新笑话、捧腹段子、趣图、神…

专题2-通过按键玩中断\第1课-中断处理流程深度剖析-lesson1

中断概念 1、中断生命周期 串口先产生一个事件&#xff0c;该事件传送到中断控制器里面&#xff0c;中断控制器会进行相应过滤&#xff0c;能通过过滤&#xff0c;那么就交给CPU去处理。 2、中断源 2440芯片手册 6410芯片手册 3、中断过滤 4、中断处理 cpu处理方式有两种&#…

Android之okdownload下载提示奔溃Expected URL scheme ‘http‘ or ‘https‘ but was ‘data‘

1 问题 客户现场奔溃在firebase上面提示错误信息如下 Fatal Exception: java.lang.IllegalArgumentException: Expected URL scheme http or https but was dataat okhttp3.t$a.a(HttpUrl.kt:38)at okhttp3.t$b.b(HttpUrl.kt:8)at okhttp3.y$a.b(Request.kt:5)at com.liulish…

mysql语法学习(一)__Instances__表

2019独角兽企业重金招聘Python工程师标准>>> ---建表 CREATE TABLE temp( id INT ); ----查询表 SELECT * FROM temp_t; ---删表 DROP TABLE temp; ---修改表名 ALTER TABLE temp_tt RENAME temp; ALTER TABLE temp RENAME TO temp_t; ALTER TABLE temp RENAME AS t…

【ArcGIS遇上Python】python批量获取栅格数据四至(top,bottom,left,right)坐标代码

上图所示为ArcGIS自带的影像数据,存放路径为C:\Program Files (x86)\ArcGIS\Desktop10.6\ArcGlobeData\wsiearth.tif",在源中可以查看该数据的四至坐标,那么,怎样用python批量获取多个栅格数据的四至坐标呢? 参考阅读:【ArcGIS风暴】ArcGIS求一个矢量图层中多个图斑…

使用 C# 读取 zip 压缩包解压文件的方法及注意事项

从 .NET Framework 4.5 版本开始&#xff0c;微软为 .NET 类库增加了一个名为 ZipFile 的类型。该类型在 System.IO.Compression 命名空间下&#xff0c;提供创建、解压缩和打开 zip 存档的静态方法。若要在 .NET Framework 应用中使用 ZipFile 类&#xff0c;必须添加对程序集…

CenterOS x64安装serv-U

1、下载serv-Usu - root cd / cd /src wget http://www.rhinosoft.com.cn/download/14.0.1.0/SU-MFTS-Linux-64bit.zip # 64bit下载地址wget http://www.rhinosoft.com.cn/download/14.0.1.0/SU-MFTS-Linux-32bit.zip # 32bit下载地址2、解压serv-U安装包unzip SU-MF…

Android实战:手把手实现“捧腹网”APP(二)-----捧腹APP原型设计、实现框架选取

APP原型设计在APP的开发过程中&#xff0c;原型设计是必不可少的。用户界面原型必须在先启阶段的初期或在精化阶段一开始建立。整个系统&#xff08;包括它的“实际”用户界面&#xff09;的分析、设计和实施必须在原型建立后进行。 如何设计“捧腹网”APP呢&#xff1f;我们先…