像素密度计算

news/2024/11/17 12:55:16/

为解决Android设备碎片化,引入一个概念density,也就是密度.它指的是在一定尺寸的物理屏幕上显示像素的数量,一般使用dpi(dots per inch,每英寸像素数)作为单位.
比如设备分辨率为240x320,屏幕物理尺寸为1.5英寸x2英寸(对角线为2.5), 它的密度可以用分辨率/尺寸表示:240/1.5或者即320/2,密度为160dpi。 算对角线也是一样的,
长的平方+宽的平方=160000,开方后=400.可知400/2.5=160.
对于用户来说,密度越大的屏幕显示效果越精细,因为每英寸显示的像素数量更多。  
 以上的描述就是一个蓝本(此蓝本对应于mdpi). 按照此蓝本一个dp相当于160dpi屏幕中的一个px.同理在,在320dpi的屏幕中,一个dp相当于2个px.   通过这样的成比例放缩,Android解决了需要多个不同屏幕中的大小显示问题.   所以在Eclipse的布局文件中,以3.7in WVGA(Nexus One)(480x800)为例,可以看见其为sw320dp,h533dp.   即宽有320dp,高为533dp.   是怎么计算出来的呢?   将(480的平方+800的平方)开方=932.9523031   然后932.9523031/屏幕尺寸3.7=252.14927,此结果为此手机的屏幕密度.

然后按照上面的蓝本,就应该要计算在该手机上1dp对于多少px.计算如下: 160 1dp=1px   252.14927 1dp=?px   
  结果为:   252.14927/160=1.5759329  
  注意:   在此一般不取1.5759329,只取到1.5即可.   所以:480/1.5=320;800/1.5=533.3333(通常取为533),即上述的sw320dp,h533dp.

手机屏幕密度的对应关系 :

120上下浮动的都属于ldpi   160上下浮动的都属于mdpi   240上下浮动的都属于hdpi   320上下浮动的都属于xdpi   
以摩托罗拉ME525+(3.7英寸 分辨率854x480像素)为例:   将(480的平方+854的平方)开方=979.6509   然后979.6509/屏幕尺寸3.7=264.770529,此结果为此手机的屏幕密度.对应为hdpi   264.770529/160=1.6548   即在此手机中1dp=1.6548个像素,只取到1.6即可   所以:480/1.6=300;854/1.6=533.75(通常取为533)   按照这个逻辑,算出来的宽应该是只有300dp.悲剧的是,如果某个控件的宽为300,在此手机上是不能铺满手机的宽的.   也就是说除以的不是1.6而还是1.5!!!所以将宽设置为320即可   总结:在hdpi中,像素转换为dp统一用的是:像素/1.5;
  
以联想K860(5.0英寸,分辨率1280x720像素)为例:   将(1280的平方+720的平方)开方=1468.60478   然后1468.60478/屏幕尺寸5=293.720,此结果为此手机的屏幕密度.对应为xdpi   293.720/160=1.8357   即在此手机中1dp=1.8357个像素   所以:1280/1.8357=697.281;720/1.8357=392.22   按照这个逻辑,算出来的宽应该是392.22.悲剧的是,如果某个控件的宽为392.22,在此手机上是显示不完全的.   也就是说除以的不是1.8而是2!!!所以将宽设置为360即可   
总结:在xdpi中,像素转换为dp统一用的是:像素/2

注意问题1:   在建立模拟器的时候注意   854x480在Hardware中,应该将Abstracted LCD density设置为240,并手动输入分辨率   1280x720在Hardware中,应该将Abstracted LCD density设置为320,并手动输入分辨率   
注意问题2:   多个layout文件夹在命名上有相应规则,以分辨率480x854为例,需要建立480x854像素的layout文件夹,命名:layout-854x480,有两点需要注意:①大数(854)必须在前,   否则会报错;②两个数字之间的符号是小写英文字母“x”,不是乘号

每英寸像素(10802280 5.84寸)=(10801080+2280*2280 )^0.5 =2522(对角线长度) ,像素密度=2522/5.84=431.9dpi 对应为xxhdpi 431.9/160= 2.69 (一个dp=2.69个像素) ,1080/2.69=401
280/2.69=847 ,控件宽为401,在手机上是显示不完全的,也就是说除以的不是2.69而是3,因此宽为360高为760。总结:在xxhdpi中,像素转换为dp统一用的是:像素/3


http://www.ppmy.cn/news/167275.html

相关文章

图像处理入门:图像的像素级运算

点运算: 代数运算: 加法运算: OpenCV中的加法是一种饱和算法,而python中的numpy是一种模操作。 import cv2 import numpy as npif __name____main__: # image cv2.imread(F:/_photo/1/33.png) # h,wimage.shape # resizecv2.re…

设备像素比(devicePixelRatio)

设备像素比(devicePixelRatio,dpr) 定义 window.devicePixelRatio是设备物理像素和设备独立像素(device-independent pixels,dips)之间的比率。window.devicePixelRatio 物理像素/ 设备独立像素 设备物理像素&…

高精度、矩阵计算器

bigint.h文件&#xff1a; #include<map> #include<vector> #include<cstdio> #include<stack> #include<iomanip> #include<cstring> #include<iostream> #include<algorithm>using namespace std;const int BASE_W 8; con…

SLIC超像素算法

文章目录 一、前言二、现有的超像素算法2.1 基于图的算法2.2 基于梯度上升的方法 三、SLIC超像素3.1 算法详解3.2 距离测量3.3 后处理3.4 时间复杂度 四、Python-OpenCV示例 一、前言 官网&#xff1a;https://www.epfl.ch/labs/ivrl/superpixels/ 超像素是把一张图片中具有相…

像元与像素

像元——pixel&#xff0c;是栅格图像的基本单元。 像元-定义 像元亦称像素或像元点。即影像单元&#xff08;pictureelement&#xff09;。是组成数字化影像的最小单元。 在遥感数据采集&#xff0c;如扫描成像时&#xff0c;它是传感器对地面景物进行扫描采样的最小单元…

FX5800计算器测量程序集2.4

FX5800计算器测量程序集2.4 版 一、程序功能 主要功能&#xff1a;采用交点法方式计算多条线路坐标正反算&#xff0c;可算任意复杂线型及立交匝道&#xff0c;包括C型&#xff0c;S型、卵型、回头曲线等&#xff1b;极坐标放样&#xff0c;全线路基边坡开挖口及坡脚放样计…

前端物理像素、逻辑像素、像素比

目录 硬件概念 屏幕尺寸 屏幕分辨率 设备像素 像素密度 系统概念 显示分辨率 设备独立像素 逻辑分辨率 浏览器中的概念 设备像素比 硬件概念 屏幕尺寸 屏幕的尺寸指的是屏幕对角线的长度。单位是英寸&#xff0c; 屏幕分辨率 屏幕分辨率也称为物理分辨率、设备分辨…

相机像素尺寸(像元大小)和成像系统分辨率之间的关系

相机像素尺寸&#xff08;像元大小&#xff09;和成像系统分辨率之间的关系 在显微成像系统中&#xff0c;常常会用分辨率来评价其成像能力的好坏。这里的分辨率通常是指光学系统的极限分辨率以及成像探测器的图像分辨率。最终图像所呈现出的实际分辨率&#xff0c;取决于二者的…