博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
不同手机根据坐标计算控件、图片的像素,px 与 dp, sp换算公式?
阅读量:5136 次
发布时间:2019-06-13

本文共 2094 字,大约阅读时间需要 6 分钟。

参考该帖子:http://www.cnblogs.com/bluestorm/p/3640786.html

PPI = Pixels per inch,每英寸上的像素数,即 "像素密度"

  • xhdpi: 2.0
  • hdpi: 1.5
  • mdpi: 1.0 (baseline)
  • ldpi: 0.75

drawable-ldpi、drawable-mdpi、drawable-hdpi 精度分别为低、中(android默认)、高。

对应的图片大小为:36x36、48x48、72x72。

xxhdpi: 144*144

xhdpi:96*96
hdpi:72*72
mdpi:48*48
ldpi:36*36

 

dp是虚拟像素,在不同的像素密度的设备上会自动适配,比如:

在320x480分辨率,像素密度为160,1dp=1px
在480x800分辨率,像素密度为240,1dp=1.5px
计算公式:1dp*像素密度/160 = 实际像素数

drawable- hdpi、drawable- mdpi、drawable-ldpi的区别:

(1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854)
(2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480)
(3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320)
系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。


 ppi的运算方式是:

PPI = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数

dp:Density-independent pixels,以160PPI屏幕为标准,则1dp=1px,

dp和px的换算公式 :

dp*ppi/160 = px。比如1dp x 320ppi/160 = 2px。

 

sp:Scale-independent pixels,它是安卓的字体单位,以160PPI屏幕为标准,当字体大小为 100%时, 1sp=1px。

sp 与 px 的换算公式:sp*ppi/160 = px

 

总结得出:

px = dp*ppi/160

dp = px / (ppi / 160)

px = sp*ppi/160

sp = px / (ppi / 160)

dp = sp? 

 

参考:

[无线手册-4] dp、sp、px傻傻分不清楚[完整] 

http://zhuanlan.zhihu.com/zhezhexiong/19565895

Supporting Different Screens | Android Developers

http://developer.android.com/training/basics/supporting-devices/screens.html#create-bitmaps

Iconography | Android Developers

http://developer.android.com/design/style/iconography.html

Devices and Displays | Android Developers

http://developer.android.com/design/style/devices-displays.html

 

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

日常测试当中,需要测试UI的控件、图片像素大小和间距的大小,那么可以按照下面的方法计算出来,不过计算出来的值由于一系列的原因只能得到个大概的值,有较小的误差

 

步骤:

1、android自带坐标功能,设置-开发者选项-指针位置,开启指针位置功能

2、然后滑动记录该控件或图片的上下或者左右的坐标差值得到px的值

3、PPI = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数,得到PPI(即每英寸所拥有的像素数目),屏幕对角线英寸数是手机多少英寸

4、a、再根据dp = px / (ppi / 160)这个公式,计算得出实际的dp

    b、或者根据下面的表格,下面的表格定义了几个标准的PPI值,作为手机的固定PPI

密度 ldpi mdpi hdpi xhdpi xxhdpi
密度值 120   160 240 320 480
分辨率 240*320 320*480 480*800 720*1280 1080*1920
各个分辨率换算比例 3 4 6 8 12

    c、和美工、产品提供的dp进行比对,就能大概判断出是否符合要求了

备注:由于Android系统如果要精确到每种DPI的屏幕基本不可能、硬件出厂时不一定是准确的分辨率,多少英寸等原因,所以计算出来的值有可能与实际有些许出入,不过已经可以满足需求了

 

转载于:https://www.cnblogs.com/daxiong2014/p/5121348.html

你可能感兴趣的文章
服务器解析请求的基本原理
查看>>
[HDU3683 Gomoku]
查看>>
下一代操作系统与软件
查看>>
Python IO模型
查看>>
DataGridView的行的字体颜色变化
查看>>
局域网内手机访问电脑网站注意几点
查看>>
[Serializable]的应用--注册码的生成,加密和验证
查看>>
Android-多线程AsyncTask
查看>>
LeetCode【709. 转换成小写字母】
查看>>
CF992E Nastya and King-Shamans(线段树二分+思维)
查看>>
如果没有按照正常的先装iis后装.net的顺序,可以使用此命令重新注册一下:
查看>>
【题解】青蛙的约会
查看>>
autopep8
查看>>
GIT在Linux上的安装和使用简介
查看>>
Android 官方新手指导教程
查看>>
幸运转盘v1.0 【附视频】我的Android原创处女作,请支持!
查看>>
安装 Express
查看>>
存储(硬件方面的一些基本术语)
查看>>
Weka中数据挖掘与机器学习系列之基本概念(三)
查看>>
leetcode-Sort List
查看>>