科普dip,dp,sp,dpi,ppi,px,Density

一、概念

DPI:DPI是Dots Per Inch的缩写,也就是“每英寸点数”,打印机分辨率。这里所说的“点”,在屏幕上并不是不变的,并不是唯一对应屏幕上的像素点,而是受到分辨率等因素的影响。这个点有可能是1个像素,也有可能是多个像素。一般是用于打印机的

PPI:是 Pixel per inch,每英寸像素数,图片分辨率。PPI越高图片越细腻。

DIP:DIP是指Density Independent Pixels,可以翻译为密度无关像素。和px相比,dip在不同密度的屏幕中实际显示比例将保持一致。根据规定,一个dp相当于160dpi屏幕中的一个px。在320dpi的屏幕中,一个dp相当于2个px。

dp:等于dip。在Android开界面布局文件时,dp是长度单位。

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

px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。显示的风格不同,就像网页,在1280*800 中显示正常。1024*768 中显示乱掉。

Density:密度,是指屏幕里像素值浓度,其计算方式为分辨率/屏幕尺寸

二、Android中对Density的特别设计

为了适配不同android设备的屏幕尺寸,Android对屏幕密度做了重新的规定,将密度Density与屏幕分辨率绑定起来,给了固定的值。

屏幕

Tyep

宽度

Pixels

高度

Pixels

尺寸

Range(inches)

屏幕密度

QVGA

240

320

2.6-3.0

low

WQVGA

240

400

3.2-3.5

low

FWQVGA

240

432

3.5-3.8

low

HVGA

320

480

3.0-3.5

Medium

WVGA

480

800

3.3-4.0

High

FWVGA

480

854

3.5-4.0

High

WVGA

480

800

4.8-5.5

Medium

FWVGA

480

854

5.0-5.8

Medium

备注

目前android默认的low=120 ;Medium =160; High = 240


三、Android中的计算关系

在android源码包TypedValue.java中,我们看如下函数:

该函数功能:是把各单位换算为像素。


DisplayMetrics metrics)
{
switch (unit) {
case COMPLEX_UNIT_PX:
return value;
case COMPLEX_UNIT_DIP:
return value * metrics.density;
case COMPLEX_UNIT_SP:
return value * metrics.scaledDensity;
case COMPLEX_UNIT_PT:
return value * metrics.xdpi * (1.0f/72);
case COMPLEX_UNIT_IN:
return value * metrics.xdpi;
case COMPLEX_UNIT_MM:
return value * metrics.xdpi * (1.0f/25.4f);
}
return 0;
}

DENSITY:密度的意思

metrics.density:默认值为DENSITY_DEVICE / (float) DENSITY_DEFAULT;

metrics.scaledDensity:默认值为DENSITY_DEVICE / (float) DENSITY_DEFAULT;

metrics.xdpi:默认值为DENSITY_DEVICE;

DENSITY_DEVICE:为屏幕密度

DENSITY_DEFAULT:默认值为160

---------------------------------------------

从Android的源码得知:

像素=dp*(屏幕密度/160)

dp=160*像素/屏幕密度

从上表可知Android规定分辨率320x480 的A屏幕密度为160dpi,分辨率480*800的B屏幕密度为240dpi

A:宽,dp=160*320/160=320

B:宽,db=160*480/240=320

由此可见,Android里用dp单位,1dp在320*480和480*800的分辨率的屏幕下是一样的,显示效果是一样的


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

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

相关文章

do与mysql数据类型对照_dophon-db: dophon框架的数据库模块,支持mysql,sqlite数据库,带有orm持久化功能与链式操作实例,贴近逻辑习惯,支持mysql多数据源配置...

dophon-db项目介绍dophon框架的数据库模块,也可单独作为一个与数据库模块交互的部件支持mysql数据库连接支持orm形式的数据操作如有疑问请发送邮件联系作者:ealohu163.com软件架构模块架构分为以组件:mysql连接组件(包括连接池,连接封装类,分页,结果输出过滤器,远程接收器,增量…

clamp 函数

返回范围内的一个数值。可以使用 clamp 函数将不断增加、减小或随机变化的数值限制在一系列的值中。 float clamp(float minnumber, float maxnumber, float parameter) 最小数值和最大数值指定返回值的范围。 参数是值要钳制在范围内的属性或变量。 如果参数位于最小数值和最大…

jquery $.each遍历json数组方法

转载地址&#xff1a;http://blog.sina.com.cn/s/blog_636f2d150101ezs1.html <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.o…

java 责任链模式 链表_责任链模式的实现及源码中应用

01—责任链模式的实现假设一个出差任务的流程需要审批出差行程和出差报销金额。那么&#xff0c;对应两个部门的审核。我们先定义一个出差任务Task类&#xff1a;然后&#xff0c;我们定义一个抽象的处理类Handler&#xff0c;其中具体的处理方法Handle交给子类去实现。然后&am…

JQuery $.each遍历JSON字符串报Uncaught TypeError:Cannot use 'in' operator to search for

查看一个简单的jQuery的例子来遍历一个JavaScript数组对象。 [js] view plaincopy var json [ {"id":"1","tagName":"apple"}, {"id":"2","tagName":"orange"}, {"id":&quo…

php setcookie 过期,php cookie怎么设置过期时间?

PHP中可以使用setcookie()函数设置cookie的过期时间。语法为“setcookie(name,value,expire,path,domain,secure)”&#xff1b;其中expire参数用于指定cookie的有效期&#xff0c;即过期时间戳。setcookie() 函数向客户端发送一个 HTTP cookie。cookie 是由服务器发送到浏览器…

nginx自定义500、404错误页面

1&#xff0c;首先在http添加以下内容 http{ fastcgi_intercept_errors on; } 2&#xff0c;server中添加以下内容&#xff1a; 注意路径 error_page 500 502 503 504 /500.html; location /500.html { internal; } error_page 404 /404.html; location /404.html { intern…

php如何输出复选框的值,php 怎么输出复选框呢?

表单有6个复选框&#xff0c;如果选中的分别是第126个&#xff0c;数据库存为 1&#xff0c;2&#xff0c;6现在的问题是 在修改的页面 怎么用php从数据库取值&#xff0c;输出6个复选框&#xff0c;让126为checked &#xff1f;回复讨论(解决方案)$row[id]1;>我的意思是 从…

jQuery Mobile动态刷新页面样式

见 百度经验 http://jingyan.baidu.com/article/7f766dafbc18f24101e1d014.html JQM里面当我们更新了某些页面标签(如: listview, radiobuttons, checkboxes, select menus)里的数据时,必须做refresh操作. 为什么必须做refresh操作操作呢?因为JQM在做页面渲染的时候,为了使样…

R-CNN论文翻译

R-CNN论文翻译Rich feature hierarchies for accurate object detection and semantic segmentation用于精确物体定位和语义分割的丰富特征层次结构2017-11-29摘要过去几年&#xff0c;在权威数据集PASCAL上&#xff0c;物体检测的效果已经达到一个稳定水平。效果最好的方法是融…

inflate简介,LayoutInflater和inflate()方法的用法

一、inflate简介 inflate这个方法总共有四种形式&#xff08;见下面&#xff09;&#xff0c;目的都是把xml表述的layout转化为View对象。 其中有一个比较常用&#xff0c;View inflate(int resource, ViewGroup root)&#xff0c;另三个&#xff0c;其实目的和这个差不多。 …

php ci框架 实例化类,php框架CI(codeigniter)自动加载与自主创建对象操作实例分析...

本文实例讲述了php框架CI(codeigniter)自动加载与自主创建对象操作。分享给大家供大家参考&#xff0c;具体如下&#xff1a;CI的autoload很好用&#xff0c;自动创建对象&#xff0c;但是注意&#xff0c;他的对象只有一个。我们很多情况下需要生成对象&#xff0c;这就很麻烦…

sass、gulp应用

Sass介绍n CSS 不是一个编程语言&#xff0c;可以用它来开发网页样式&#xff0c;但是没有办法用它进行编程。SASS 的出现&#xff0c;让 CSS 实现了通过代码编程来实现的方式。n SASS 是一种 CSS 开发工具&#xff0c;提供了许多便利的写法&#xff0c;让CSS 的处理实现了可编…

自定义控件SettingItemView

一、效果图 选中&#xff1a;显示自动更新开启不选择&#xff1a;显示自动更新关闭------------在布局文件中的使用方式和android自生的控件一样 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.andro…

php中如何存储多个文本框,php-如何将每个字符的文本框拆分为多个子文本框

我正在设计一个PHP表单,其中包含一些输入字段,如下图所示.如何将输入类型(文本框)拆分为单个字符子文本框,或将文本框拆分为给定字符串的每个字符的多列文本框.以及如何在其中插入数据| JOHN DOE |进入| J | O | H | N | | D | O | E |这样解决方法:的HTML的CSS#text{backgroun…

为什么会有 AOP

为什么80%的码农都做不了架构师&#xff1f;>>> AOP 面向切面的编程。 先上三张图片 三处对数据库进行操作&#xff0c; 但这三处有大量的重复的代码&#xff0c;每次都是获取session&#xff0c;获取mapper&#xff0c;执行&#xff0c; commit&#xff0c;close…

PHP有表单和js交互乱码问题,js 和 php交互问题

就是前端js发送数据给php处理&#xff0c;然后处理完之后接受php发送的返回结果&#xff0c;不用ajax&#xff0c;有其他的方法吗&#xff1f;多谢&#xff01;iframe 公子 说的很明白了。Flashiframe内嵌个表单提交到PHP页面并显示结果&#xff0c;JS读取iframe页面内的内容即…

Android应用检查更新下载安装打开

一、效果 低版本1.02检测到新版本1.03 调用android的安装activity页面 安装完成 打开 1.03版本 二、注意 必须使用签名的应用。因为android不管是虚拟机还是真机安装应用都需要签名。 在开发时&#xff0c;我们运行程序时&#xff0c;开发环境ADT会自动给我们加入一个默认的…

lnmp解析php,搭建LNMP,可以解析PHP文件-Go语言中文社区

一、安装 nginx1. yum -y install pcre-devel zlib-devel links 下载相应软件可以使用rpm -qa 软件名 来查看是否安装成功??2.useradd -u 250 -M -s /sbin/nologin nginx 建立程序用户&#xff0c;降低权限3.tar xf nginx-1.6.0.tar.gz -C /usr/src/nginx 解压并指定…

Linux vi 编辑器常见命令的使用

Linux vi 编辑器常见命令的使用 Linux下的文本编辑器有很多种&#xff0c;vi 是最常用的&#xff0c;也是各版本Linux的标配。注意&#xff0c;vi 仅仅是一个文本编辑器&#xff0c;可以给字符着色&#xff0c;可以自动补全&#xff0c;但是不像 Windows 下的 word 有排版功能。…