dp和px之间的换算公式

发布网友

我来回答

2个回答

热心网友

dp和px的换算公式 :
dp*ppi/160 = px。比如1dp x 320ppi/160 = 2px。
sp:Scale-independent pixels,它是安卓的字体单位,以160PPI屏幕为标准,当字体大小为 100%时, 1sp=1px。
dp也就是dip:device independent pixels(设备像素)。
dp是一种与密度无关的像素单位,在每英寸160点的屏幕上,1dp = 1px。
px(像素):屏幕上的点。

热心网友

在Android开发中,尺寸换算可以说既简单又复杂,而且还比较碎,特别是屏幕适配的时候肯定会用到他们。今天就来总结一下他们三者的关系,首先说下他们都是什么。

px:像素单位。最基础的图像构成元素单位
dp:与密度无关的像素,这是一个基于屏幕物理密度的抽象单位。
这里要解释一下密度的概念,密度(dpi):每英寸包含的像素个数(单位是dpi),1dp实际上相当于密度为160dpi的屏上的一个点。可否理解为物理尺寸?也就是说,如果屏幕物理密度是160dpi时,dp和px是等效的。
换算公式 1: px = dp * (dpi / 160)
sp:同dp相似,但还会根据用户的字体大小偏好来缩放(建议使用sp作为文本的单位,其它用dip)

咱们废话不多说,直接上表格,通过这个表格你会非常快速的定位到你要找的内容。

宽×高(标准值)240×320320×480480x800720x12801080x19201440×2560
DPI等级LDPIMDPIHDPIXHDPIXXHDPIXXXHDPI
DPI数值 (density)1201602403204800
对应比例34681216
1DP=?PX0.7511.5234
注:density值表示每英寸有多少个显示点,与分辨率是两个概念。
MDPI为baseline,其他均以此为基准,在此设备上,1dp = 1px

下面附上开发中用到的dp和px相互转换的工具类。sp和dp在开发中是同等对待的,只是sp是用来对文字的大小的。其他的全用dp就好。

import android.content.Context;

public class DensityUtil {

/**
* 根据手机的分辨率从 dp 的单位 转成为 px(像素)
*/

* 根据手机的分辨率从 px(像素) 的单位 转成为 dp
*/

这个工具类在网上一大推,而且基本都一样,加0.5f是有个偏移值,确保精度不流失。scale是在这个类DisplayMetrics中定义的全局变量,其实这个值就是当前手机的density/160

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com