文档章节

DPI和px直接的关系

michaelpan
 michaelpan
发布于 2014/12/05 16:02
字数 432
阅读 780
收藏 7

首先屏幕的分辨率和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 http://www.2cto.com/kf/201410/346962.html

© 著作权归作者所有

共有 人打赏支持
michaelpan
粉丝 4
博文 33
码字总数 9970
作品 0
杭州
高级程序员
私信 提问
Android必知必会-App 常用图标尺寸规范汇总

1. 程序启动图标(icon launcher) 放在下,文件名为 L DPI ( Low Density Screen,120 DPI ),其图标大小为 36 x 36 px M DPI ( Medium Density Screen, 160 DPI ),其图标大小为 48 x 48 ...

记录自己的点点滴滴
2018/10/15
0
0
dpi 、 dip 、分辨率、屏幕尺寸、px、density 关系以及换算

一、基本概念 dip : Density independent pixels ,设备无关像素。 dp :就是dip px : 像素 dpi :dots per inch , 直接来说就是一英寸多少个像素点。常见取值 120,160,240。我一般称作...

小湘西
2015/11/06
0
0
dpi 、 dip 、分辨率、屏幕尺寸、px、density 关系以及换算

一、基本概念 dip : Density independent pixels ,设备无关像素。 dp :就是dip px : 像素 dpi :dots per inch , 直接来说就是一英寸多少个像素点。常见取值 120,160,240。我一般称作...

geek_loser
2015/11/06
0
0
Android手机分辨率基础知识(DPI,DIP计算)

1.术语和概念 术语 说明 备注 Screen size(屏幕尺寸) 指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸 摩托罗拉milestone手机是3.7英寸 Aspect Ratio(宽高比率) 指...

liuher
2014/07/22
0
0
什么是dp,dip,sp和px及他们之间的的关系?《二》

前言 首先要说的是,Android的碎片化的问题非常严重。因为 Android厂商非常多,设备非常多,产生了各种各样的分辨率。 为了解决碎片化的问题,Android 开发文档中定义了 dp,sp 等新的单位 ...

goodgleCoder
2018/01/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Python+Appium自动化测试环境搭建

1.Android SDK 下载SDK并配置系统环境变量ANDROID_HOME。 2.Appium 2.1 直接下载安装 官网下载安装appium-desktop-setup.exe。 2.2 通过npm下载安装 appium本质是一个nodejs库所以要先安装n...

维他ViTa
37分钟前
2
0
【git命令】git远程操作相关命令(remote 、push、fetch 、pull)

git系统图 git remote 为了便于管理,Git要求每个远程主机都必须指定一个主机名。为了便于管理,Git要求每个远程主机都必须指定一个主机名。 git remote【查看创库名】 git remote 在我们c...

echojson
46分钟前
2
0
MacOS安装单机版HBase

MacOS安装HBase,必然是用于测试了,从简入手、从简配置。 直接通过brew安装即可: brew install hbase 成功安装后,验证是否成功,如果不出意外的话,应该有如下输出: RippleMBP:~ userna...

RippleChan
今天
3
0
linux下oracle随操作系统启动而启动

大家一定还记得,我们在windows下安装oracle后,重起windows,数据库会自动启动,但在linux下,如果我们重起了操作系统, 就会发现数据库需要手工去输入,这个本来有好处,让dba知道操作系统已经重起...

突突突酱
今天
4
0
nacos之springboot

本地操作系统:ubuntu18,我使用docker的方式启动nacos服务 docker image方式启动nacos 在docker hub上可以搜到nacos-server List-1.1 拉去最新的版本 mjduan@mjduan-ubuntu:/opt/software$ ...

克虏伯
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部