DPI和px直接的关系

首先屏幕的分辨率和dpi,px没有关系。
因为有 1080x1920的电视屏幕(45英寸), 也有1080x1920的手机屏幕(5.5英寸)

一英寸有多少个点儿?  我们用来density来分辨

ldpi 120dpi 0.75
mdpi 160dpi 1 一般是HVGA
hdpi 240dpi 1.5 一般是WVGA
xhdpi 320dpi 2
xxhdpi 480dpi 3

在160dpi的设备上
DIP(也就是我们用的dip/dp):device independent pixel,设备独立像素, 一英寸的像数数,我们不会直接使用px,而是使用dp,px = 1dp * density(由DPI)决定。

在mdpi设备上 1dip = 1px
在xxhdpi设备上 1dip = 3px

尽量使用widget的宽高尽量使用dp,字体使用sp,让系统自己按照比例适配。

参考文章中还提到了在一些非常规的设备上 如何适配尺寸和大小。
总的来说,如果是图片 可以先按照最大的设备进行切图,widget的宽高设置成wrap_content即可,其余小图的尺寸可以按照上面的比列进行切图。

对于一些必须定义出的宽高,则使用
values-mdpi/dimens.xml
values-hdpi/dimens.xml
values-xhdpi/dimens.xml
values-xxhdpi/dimens.xml
values/dimens.xml
来适配不同的大小。

不同分辨率的布局:
layout-640x360,layout-800x480

手机上px和dp,sp之间的转化

private static final float scale = mContext.getResources().getDisplayMetrics().density;

private static final float scaledDensity = mContext.mContext.getResources().getDisplayMetrics().scaledDensity;

/**

  • dp转成px
  • @param dipValue
  • @return
    */
    public static int dip2px(float dipValue) {
    return (int) (dipValue * scale + 0.5f);
    }

/**

  • px转成dp
  • @param pxValue
  • @return
    */
    public static int px2dip(float pxValue) {
    return (int) (pxValue / scale + 0.5f);
    }

/**

  • sp转成px
  • @param spValue
  • @param type
  • @return
    */
    public static float sp2px(float spValue, int type) {
    switch (type) {
    case CHINESE:
    return spValue * scaledDensity;

    case NUMBER_OR_CHARACTER:

    return spValue * scaledDensity * 10.0f / 18.0f;

    default:

    return spValue * scaledDensity;

    }
    }

参考
http://www.paibaidu.com/index.php/2014/08/13/966.html

时间: 2024-10-09 08:06:04

DPI和px直接的关系的相关文章

dpi 、 dip 、分辨率、屏幕尺寸、px、density 关系以及换算

一.基本概念 dip        : Density independent pixels ,设备无关像素. dp        :就是dip px        : 像素 dpi       :dots per inch , 直接来说就是一英寸多少个像素点.常见取值 120,160,240.我一般称作像素密度,简称密度 density : 直接翻译的话貌似叫 密度.常见取值 1.5 , 1.0 .和标准dpi的比例(160px/inc) 分辨率   : 横纵2个方向的像素点的数量,常见取值

Android开发中dp、dpi、px的区别(转)

一.基本概念 - dp:安卓中的相对大小 - dpi:(dot per inch)每英寸像素多少 - px:像素点 二.详细说明 1.px和dpi - px: 平常所说的1920×1080只是像素数量,也就是1920px×1080px,代表手机高度上有1920个像素点,宽度上有1080个像素点. - dpi: 要想判别手机屏幕的显示好坏,还要考虑屏幕的宽高(英寸),也就是用dpi即每英寸多少像素来评价屏幕的显示效果.(不然假如手机分辨率是1920×1080,但是屏幕是几十寸的,那显示效果将不会很

px与rem关系及转换

PX特点 1. IE无法调整那些使用px作为单位的字体大小:2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位:3. Firefox能够调整px和em,rem,但是96%以上的中国网民使用IE浏览器(或内核). px像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的.(引自CSS2.0手册)em是相对长度单位.相对于当前对象内文本的字体尺寸.如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸.(引自CSS2.0手册) 任意浏览器的默认

px、pt、ppi、dpi、dp、sp之间的关系

http://www.woshipm.com/pmd/176328.html 各自的定义: px:pixel,像素,电子屏幕上组成一幅图画或照片的最基本单元 pt: point,点,印刷行业常用单位,等于1/72英寸 ppi: pixel per inch,每英寸像素数,该值越高,则屏幕越细腻 dpi: dot per inch,每英寸多少点,该值越高,则图片越细腻 dp: dip,Density-independent pixel, 是安卓开发用的长度单位,1dp表示在屏幕像素点密度为160p

px dip dp dpi density sp 一次性弄懂

1 px  像素单位 像素和设备有关   如480 * 320分辨率的手机,则横向480个像素点,纵向320个像素点. 固定长度下像素点越多,则像素更高,像素点更小,图像更清晰 2. dpi :dots per inch  每英寸像素个数,常见取值 120,160,240,320.分别对应low,medium,high,xhigh, dpi取值,和设备有关(同样大小的手机分辨率有高有底),如     320* 240的手机,尺寸为 2.0 * 1.5(英寸) ,dpi则为160  . 通常广告所

Android程序猿如何泡设计妹之快速掌握dp和px才可以

相信很多Android程序猿已经对身边的设计妹垂涎三尺了,那么如何博得设计妹的好感呢,学好这篇文章就可以了. 程序猿与UI设计妹讨论设计稿和切图的时候,经常会因为dp和px的问题搞的不愉快,这里可以分析出两个原因: 1,程序猿原因,不懂dp和px的换算关系.包括我,以及我见到的大多数开发,更多的时候其实不是很关心dp和px是如何来的,以及如何转换的,只知道掌握一般情况用dp,字体大小用sp,画线用px. 2,设计妹原因,设计不出dp标注,或者甚至就不懂dp是什么东东.大多数公司并不会为Andro

安卓的显示单位dp、dip、px、sp

dp==dip:设备独立像素 .(device independent pixels) dip是年迈的dp,已经退休,在比较老的代码中还可以看到dip.目前谷歌推荐用dp,在我们开发安卓程序的时候,除了字体之外,都推(强)荐(制)使用dp. sp:比例像素.(scaled pixels ) sp一般用于处理字体.安卓有个东西叫做大字体,那玩意就是专门调整sp的.所以所有关于字体的单位,推(强)荐(制)使用sp. px:像素(pixels) px即手机上面的物理点,属于物理范畴的,所以在写安卓程序

高DPI下界面错乱的解决方法和原理

来源: http://bbs.csdn.net/topics/370177760 我在win32 + c写的界面中解决办法,就是把字体的字号给固定了,这样做的结果就是,不管dpi是否有改变,界面中控件的文字的字号不变,就不会出现文字换行的情况. 但像菜单文字的字号就变大了,combobox(右三角),checkbox(选择框)变大一点点,显的有点不协调. 但至少不影响使用. 下面是判断当前系统的dpi,然后重置字体的字号. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

使用em和rem替代px

rem是指根元素的字体大小,默认情况下html的字体大小为:16px=1rem.而em是相对单位,是基于它的祖先元素计算的. 如果我们不指定html和body的字体大小,要得到12px的rem需要这样计算:12/16=0.75rem 下面这张图em和px的转换关系是基于父元素是16px的情况下,所以rem也是这样的结果. 但是.这样换算总归有点麻烦,我们总不能写px的时候时刻被一张转换表或者计算器. 我们可以修改根元素html的字体:16*62.5%=10.4px ,约10px 现在,px与re