- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章android计算pad或手机的分辨率/像素/密度/屏幕尺寸/DPI值的方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
手机分辨率基础知识(dpi,dip计算) 。
1.术语和概念 。
术语 。 |
说明 。 |
备注 。 |
screen size(屏幕尺寸) 。 |
指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸 。 |
摩托罗拉milestone手机是3.7英寸 。 |
aspect ratio(宽高比率) 。 |
指的是实际的物理尺寸宽高比率,分为long和nolong 。 |
milestone是16:9,属于long 。 |
resolution(分辨率) 。 |
和电脑的分辨率概念一样,指手机屏幕纵、横方向像素个数 。 |
milestone是854*480 。 |
dpi(dot per inch) 。 |
每英寸像素数,如120dpi,160dpi等,假设qvga(320*240)分辨率的屏幕物理尺寸是(2英寸*1.5英寸),dpi=160 。 |
可以反映屏幕的清晰度,用于缩放ui的 。 |
density(密度) 。 |
屏幕里像素值浓度,resolution/screen size可以反映出手机密度. |
。 |
density-independent pixel (dip) 。 |
指的是逻辑密度计算单位,dip和具体像素值的对应公式是dip/pixel=dpi值/160,也就是px = dp * (dpi / 160) 。 |
。 |
2. dpi值计算 。
比如:计算wvga(800*480)分辨率,3.7英寸的密度dpi,如图1所示 。
图1 。
diagonal pixel表示对角线的像素值(=),dpi=933/3.7=252 。
3.手机屏幕的分类 3.1根据手机屏幕密度(dpi)或屏幕尺寸大小分为以下3类,如图2所示 。
。
图2 。
3. 2手机屏幕分类和像素密度的对应关系如表1所示:
。 |
low density (120), ldpi 。 |
medium density (160), mdpi 。 |
high density (240), hdpi 。 |
small screen 。 |
qvga (240x320) 。 |
。 |
。 |
normal screen 。 |
wqvga400 (240x400)wqvga432 (240x432) 。 |
hvga (320x480) 。 |
wvga800 (480x800)wvga854 (480x854) 。 |
large screen 。 |
。 |
wvga800* (480x800)wvga854* (480x854) 。 |
。 |
表1 。
3.3手机尺寸分布情况(http://developer.android.com/resources/dashboard/screens.html)如图3所示,目前主要是以分辨率为800*480和854*480的手机用户居多 。
图3 。
从以上的屏幕尺寸分布情况上看,其实手机只要考虑3-4.5寸之间密度为1和1.5的手机 。
4 ui设计 。
从开发角度讲,应用程序会根据3类android手机屏幕提供3套ui布局文件,但是相应界面图标也需要提供3套,如表2所示 。
icon type 。 |
standard asset sizes (in pixels), for generalized screen densities 。 |
||
。 |
low density screen (ldpi) 。 |
medium density screen (mdpi) 。 |
high density screen (hdpi) 。 |
launcher 。 |
36 x 36 px 。 |
48 x 48 px 。 |
72 x 72 px 。 |
menu 。 |
36 x 36 px 。 |
48 x 48 px 。 |
72 x 72 px 。 |
status bar 。 |
24 x 24 px 。 |
32 x 32 px 。 |
48 x 48 px 。 |
tab 。 |
24 x 24 px 。 |
32 x 32 px 。 |
48 x 48 px 。 |
dialog 。 |
24 x 24 px 。 |
32 x 32 px 。 |
48 x 48 px 。 |
list view 。 |
24 x 24 px 。 |
32 x 32 px 。 |
48 x 48 px 。 |
表2 。
5 如何做到自适应屏幕大小呢?
1)界面布局方面 。
需要根据物理尺寸的大小准备5套布局,layout(放一些通用布局xml文件,比如界面中顶部和底部的布局,不会随着屏幕大小变化,类似windos窗口的title bar),layout-small(屏幕尺寸小于3英寸左右的布局),layout-normal(屏幕尺寸小于4.5英寸左右),layout-large(4英寸-7英寸之间),layout-xlarge(7-10英寸之间) 。
2)图片资源方面 。
需要根据dpi值准备5套图片资源,drawable,drawalbe-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi 。
android有个自动匹配机制去选择对应的布局和图片资源 。
手机的分辨率 像素 密度和 屏幕尺寸是我们经常听到的字眼,它们之间的关系如下:
分辨率是指屏幕上有横竖各有多少个容器点,每个容器点是用于容纳一个像素的.
像素严格来说是指用于图片上的,图片上的像素点越多,图片就越显的清晰,当然也会越大.
手机可以有相同的分辨率,但屏幕尺寸可以不相同,例如3.7英寸的屏幕可以是320*480的分辨率,5.1英寸的屏幕也可以是320*480的分辨率,那这2个屏幕在显示时有什么区别呢?
举个例子:如果a手机屏幕宽度是5cm,b手机宽度是10cm,宽度分辨率都是320,那么显示同一张图片时,b手机上的图片就会显的大一点,并且没有a手机上的清晰。为什么呢,这就是我们常见的密度(dpi)概念,即每英寸多少个点。本身一行5cm有320个点,dpi大约是150,现在是一行10cm有320个点,密度大约是75。密度大为减少,所以b手机显示的图片会变大,不清晰。就像我们使用android screen monitor在电脑上显示手机屏幕一样,总感觉在电脑上显示时有点大,这就是因为你电脑的分辨率密度没有手机的分辨率密度大导致的,可以把电脑的分辨率调大一点让电脑屏幕密度和手机密度一致.
换算方式:
72像素/英寸=28.346像素/厘米 。
300像素/英寸=118.11像素/厘米 。
1 厘米=0.3937 英寸 。
1 英寸=2.54 厘米 。
像素不能直接换算成英寸、厘米,要在dpi下才能换算! 。
以常见1024像素对比:
1024像素=3.413英寸=8.67厘米 (300像素/英寸dpi 每英寸≈0.003333像素),所以1024像素的厘米尺寸就是:1024*0.003333*2.54 。
1024像素=14.222英寸=36.12厘米 (72像素/英寸dpi 每英寸≈0.013889像素),所以1024像素的厘米尺寸就是:1024*0.013889*2.54 。
提起分辨率,我们需要了解两个概念,图像分辨率和输出分辨率.
图像分辨率是每英寸的像素数,以ppi为单位,图像分辨率又常常被表示成每一个方向上的总像素数量,比如640×480像素、1280×960像素等。而决定图像输出质量的是图像的输出分辨率,描述的是设备输出图像时每英寸可产生的点数(dpi),以dpi为单位,两者有联系但并不总是相等的.
dpi (dot per inch)输出分辨率 。
打印机分辨率又称为输出分辨率,是指在打印输出时横向和纵向两个方向上每英寸最多能够打印的点数,通常以“点/英寸”即dpi(dot per inch)表示。而所谓最高分辨率就是指打印机所能打印的最大分辨率,也就是所说的打印输出的极限分辨率。平时所说的打印机分辨率一般指打印机的最大分辨率,目前一般激光打印机的分辨率均在600×600dpi以上.
dpi是“dot per inch”的缩写。顾名思义,就是指在每英寸长度内的点数。通常,我们都使用dpi来作为扫描器和打印机的解析度单位,数值越高表示解析度越高。目前,市面上出售扫描器的光学解析度主要有600×1200 dpi和1200×2400 dpi两种。扫描器的光学解析度由两个数字构成,是因为横向解析度和纵向解析度不同。较小的数字通常为纵向解析度,即我们一般区分扫描器解析度用的数值。也就是说,600×1200 dpi的扫描器,我们通常简称为600 dpi.
电脑显示器的解析度约为72dpi,这个数值其实是这样计算出来的:以一部15寸的电脑显示器为例,可视面积的水平长度大约为11.2寸,如果显示模式是800×600,那么解析度就是800/11.2=71.4。如果是17寸电脑显示器,以1024×768的显示模式来看,解析度就变成1024/12.8=80了.
像素(pixel) 。
对于计算机的屏幕设备而言,像素(pixel)或者说px是一个最基本的单位,就是一个点。其它所有的单位,都和像素成一个固定的比例换算关系。所有的长度单位基于屏幕进行显示的时候,都统一先换算成为像素的多少,然后进行显示。所以,就计算机的屏幕而言,相对长度和绝对长度没有本质差别。任何单位其实都是像素,差别只是比例不同.
如果把讨论扩展到其它输出设备,比如打印机,基本的长度单位可能不是像素,而是其它的和生活中的度量单位一致的单位了.
css绝对长度单位是对于输出设备(output device)而言的。拿pt来说,这是一个在文字排版工具(word,adobe等)中非常常用的字体单位,不管你的显示器分辨率是1024*768,还是800*600,同一篇文档打印在纸面上的结果是一样的.
写网页用哪个长度单位更好,是px还是pt呢?
我个人比较偏向px,因为px能够精确地表示元素在屏幕中的位置和大小,网页主要是为了屏幕显示,而不是为了打印等其它需要的.
css相对长度单位(relative length unit) 。
css相对长度单位中的相对二字,表明了其长度单位会随着它的参考值的变化而变化,不是固定的。以下是css相对长度单位列表:
css相对长度单位 。
说明:
em 元素的字体高度the height of the element s font 。
ex 字母x的高度the height of the letter "x" 。
px 像素pixels 。
% 百分比percentage 。
css绝对长度单位(absolute length unit) 。
绝对长度单位是一个固定的值。比如我们常用的有mm,就是毫米的意思。以下是css绝对长度单位列表:
css绝对长度单位 。
说明 。
in 英寸inches (1英寸 = 2.54 厘米) 。
cm 厘米centimeters 。
mm 毫米millimeters 。
pt 点points (1点 = 1/72英寸) 。
pc 皮卡picas (1皮卡 = 12 点) 。
像素是相对于显示器屏幕分辨率而言的。譬如,windows的用户所使用的分辨率一般是96像素/英寸。而mac的用户所使用的分辨率一般是72像素/英寸。所以在windows的css中dpi为 96像素/英寸.
另附上对照表:
常见照片尺寸、像素及打印尺寸对照表(实用) 。
英寸 。 照片规格 。 |
厘米 。 |
像素 。 |
数码相机类型 。 |
打印尺寸 。 分辨率:300dpi 。 |
1寸 。 |
2.5×3.5cm 。 |
413×295 。 |
/ 。 |
/ 。 |
身份证大头照 。 |
3.3×2.2 。 |
390×260 。 |
/ 。 |
/ 。 |
2 。 |
3.5×5.3cm 。 |
626×413 。 |
/ 。 |
/ 。 |
小2寸(护照) 。 |
4.8×3.3cm 。 |
567×390 。 |
/ 。 |
/ 。 |
5寸 。 |
12.7×8.9 。 |
1200×840以上 。 |
100万像素 。 |
/ 。 |
6寸 。 |
15.2×10.2 。 |
1440×960以上 。 |
130万像素 。 |
/ 。 |
7寸7×5 。 |
17.8×12.7 。 |
1680×1200以上 。 |
200万像素 。 |
12.7x17.7 。 |
8寸8×6 。 |
20.3×15.2 。 |
1920×1440以上 。 |
300万像素 。 |
15.2x20.3 。 |
10寸10×8 。 |
25.4×20.3 。 |
2400×1920以上 。 |
400万像素 。 |
20.3x25.4 。 |
12寸12×10 。 |
30.5×20.3 。 |
2500×2000以上 。 |
500万像素 。 |
25.4x30.5 。 |
15寸15×10 。 |
38.1×25.4 。 |
3000×2000 。 |
600万像素 。 |
25.4x38.1 。 |
最近做项目发现,同样的分辨率2台机器,某个界面的样式就是不一样,经过多次测试发现,原来第一台pad(lenovo a1_07)的密度为1.5,转换成dpi是240,属于高密度;另一台pad的密度为1,属于中等密度,转换成dpi就是160,应该属于中等密度 这就发现问题了, 解决方法: 应该在values文件夹下面分别放置values-hdpi, values-mdpi分别对应的样式,就ok了 以下是学习资料 screen resolution 把设备上的物理dpi 用乘法转换成 dips androidname approx. resolution multiply by this get dips ldpi ~120 dpi 1.333 mdpi ~160 dpi 1.0 (基线密度) tvdpi ~213 dpi 0.751 hdpi ~240 dpi 0.67 xhdpi ~320 dpi 0.5 dpi:每英寸像素数(密度*160) density:密度 手机像素密度(density)实际上是以单位英寸160个像素作为参考标准,主要密度有0.75,1,1.5和2,当密度为2时就表示1英寸有320个像素,android中通过代码可以获取到屏幕的像素值和密度,根据这些值就可以反向算出屏幕的物理尺寸 屏幕尺寸=屏幕对角线的像素值/(密度*160)= [(长的平方+宽的平方)开根号] / (密度*160) 实践过程: 由于android设备中获取的密度density本身是个约等于的数值,比如计算出密度的准确值density=1.575,实际在代码中读到的density=1.5, 需要实现一个简单的计算屏幕尺寸的应用在不同设备上验证物理尺寸准确程度,具体代码如下: displaymetrics metric = new displaymetrics(); getwindowmanager().getdefaultdisplay().getmetrics(metric); int width = metric.widthpixels; // 屏幕宽度(像素) int height = metric.heightpixels; // 屏幕高度(像素) float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5) int densitydpi = metric.densitydpi; // 屏幕密度dpi(120 / 160 / 240) double diagonalpixels = math.sqrt(math.pow(width, 2)+math.pow(height, 2)) ; double screensize = diagonalpixels/(160*density) ; 有可能上面的计算屏幕的尺寸不是太准确 。
最后此篇关于android计算pad或手机的分辨率/像素/密度/屏幕尺寸/DPI值的方法的文章就讲到这里了,如果你想了解更多关于android计算pad或手机的分辨率/像素/密度/屏幕尺寸/DPI值的方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在使用 JavaFX 开发视频播放器。我正在将视频从本地文件系统加载到 JavaFX 类媒体中。然后我想获取宽度和高度,以便我可以将场景的尺寸设置为该大小: Media media = new M
我是OpenCV的新手,正在尝试解决这个问题。我有一个.mp4文件保存在从网络摄像头流式传输的磁盘上。现在,我需要制作视频的低分辨率版本,以上传到Web服务器(这个想法是,低分辨率预览实时或多或少地上
我在我的应用程序中使用 jfree 图表(折线图)...创建时我的图表看起来很模糊...我怎样才能获得高清晰度图像。 我使用过:ChartUtilities.writeScaledChartAsPNG
我正在用 Java 编写一个工具来处理我网站上上传的文件。我想以特定的方式管理图像:如果尺寸大于限制,我想首先调整图像的尺寸,然后再次检查尺寸。当然,我不想做无用的工作,所以我想在调整图像大小之前估计
是否有一种纯 WPF 方法来获取有关所有可用显示器大小(分辨率)的信息。我知道我可以使用 Screen.AllScreens 来获取它们,但在我的遗留项目中我无法添加新的引用(内置 WPF 程序集除外
看了Developer文档,部分理解了LDPI,HDPI,MDPI,XHDPI类比,网上到处找也没有找到具体答案。 我有两部手机,一部是小屏幕,一部是平板电脑。我希望我的小屏幕手机上的按钮看起来很小,
对于下面给定的网页, xyz {% load staticfiles %} html, body {
我在 Mac 上使用多个 JFrames 制作了一个程序,分辨率还可以,一切都适合屏幕。但是,当我在我的 PC 上运行该程序时,JFrames 太大并且会立即离开屏幕。 我的问题是:是否可以在 JFr
我需要有关如何检索屏幕分辨率的帮助,如下图所示。 我找到了 this documentation这真的很有帮助。这是我根据这些文档尝试的代码: int numberOfScreens = GetSys
有什么方法可以更改分辨率或为亚马逊 Kindle 键盘上的屏幕设置不同的边界?我的屏幕有一部分出现裂纹,我想解决这个问题。 我试过在文件系统中乱搞(通过 WiFi 连接),但我的所有属性更改都没有任何
快速提问, 我正在开发 libgdx 中的游戏,但遇到了问题。我正在尝试扩展我的 Assets ,我正在使用 Gdx.graphics.getDensity() 来获取密度,然后使用它作为乘数来设置我
我有一些关于屏幕分辨率的问题,我不清楚。这些问题假设我的应用程序将在 iOS 4.0 及更高版本以及 iPhone 3GS 或 iPhone 4 上运行。 启动图像 (default.png) 的大小
我们有一个应用程序在审核过程中被 Apple 应用程序审核人员拒绝。拒绝的原因是应用程序在 Ipad 上运行时无法正确缩放。 该应用程序本来就不是要在 Ipad 上运行的,但与他们争论这一点似乎没有意
我试图在不解码文件的情况下获取 JPEG 图像的分辨率。我从互联网上获得了几个样本,但没有一个可以正常工作。似乎是这样,因为许多 JPEG 文件不是标准的,尽管任何图形应用程序(Irfan、PSP、F
我尝试了很多事情,但是所有尝试都失败了。 我需要将灰度图像(2560x1440)调整为更低或更高的分辨率,然后我需要将边界设置为原始大小(2560x1440),但将调整后的图像保持在中心。 我使用的是
我正在使用 GLSulfaceView 开发一个静音相机应用程序,该应用程序从预览中捕获图片。 为了捕捉图片,我使用 GLES20.glReadPixels(0, 0, surfaceWidth, s
是否有相当于 yarn resolutions 的 npm功能? npm package.json docs 中没有提及它. 例如,我想在 3.3.2 上安装 lerna@3.3.2 及其依赖项之一
我制作了一个在 Arduino 上运行的 24x15 LED 显示屏,去年我在内存中放入了 32KB 的图形例程,这很酷。 但现在我已经升级到 Arduino Mega,具有 256KB 内存,并且有
我的场景是,我正在收集网络数据包,如果数据包与网络过滤器匹配,我想记录连续数据包之间的时间差,最后一部分是不起作用的部分。我的问题是,无论我使用什么 C 定时器函数,我都无法获得准确的亚秒级测量。我尝
我们一直在学校布置一项任务,需要更改图像(反转颜色、切换颜色、旋转 90 度、双倍大小、放大图像),现在我正在尝试通过将分辨率加倍来使其大小加倍,但无法弄清楚如何访问该地址并更改它。我们得到了两个函数
我是一名优秀的程序员,十分优秀!