Android上常见度量单位【xdpi、hdpi、mdpi、ldpi】解读

论坛 期权论坛     
选择匿名的用户   2021-6-2 18:44   590   0
<span style="border-collapse:collapse; color:rgb(68,68,68); font-family:Tahoma,&#39;Microsoft Yahei&#39;,Simsun; font-size:14px; line-height:21px">术语和概念 <br style="word-wrap:break-word"> 屏幕尺寸 <br style="word-wrap:break-word"> 屏幕的物理尺寸,以屏幕的对角线长度作为依据(比如 2.8寸, 3.5寸)。 <br style="word-wrap:break-word"> 简而言之, <a class="relatedlink" href="http://www.apkbus.com/" rel="noopener noreferrer" style="word-wrap:break-word; color:rgb(51,102,153); text-decoration:underline; border-bottom-width:1px; border-bottom-style:solid; border-bottom-color:blue" target="_blank">Android</a>把所有的屏幕尺寸简化为三大类:大,正常,和小。 <br style="word-wrap:break-word"> 程序可以针对这三种尺寸的屏幕提供三种不同的布局方案,然后系统会负责把你的布局方案以合适的方式渲染到对应的屏幕上,这个过程是不需要程序员用代码来干预的。<br style="word-wrap:break-word"> <span style="word-wrap:break-word; font-size:12px">屏幕长宽比 </span><br style="word-wrap:break-word"> 屏幕的物理长度与物理宽度的比例。程序可以为制定长宽比的屏幕提供制定的素材,只需要用系统提供的资源分类符long和 notlong。<br style="word-wrap:break-word"> <span style="word-wrap:break-word; font-size:12px">分辨率</span> <br style="word-wrap:break-word"> 屏幕上拥有的像素的总数。注意,虽然大部分情况下分辨率都被表示为“宽度×长度”,但分辨率并不意味着屏幕长宽比。在 Android系统中,程序一般并不直接处理分辨率。<br style="word-wrap:break-word"> <span style="word-wrap:break-word; font-size:12px">密度</span> <br style="word-wrap:break-word"> 以屏幕分辨率为基础,沿屏幕长宽方向排列的像素。 <br style="word-wrap:break-word"> 密度较低的屏幕,在长和宽方向都只有比较少的像素,而高密度的屏幕通常则会有很多 ——甚至会非常非常多——像素排列在同一区域。屏幕的密度是非常重要的,举个例子,长宽以像素为单位定义的界面元素(比如一个按钮),在低密度的屏幕上会 显得很大,但在高密度的屏幕上则会显得很小。<br style="word-wrap:break-word"> <span style="word-wrap:break-word; font-size:12px">密度无关的像素( DIP )</span> <br style="word-wrap:break-word"> 指一个抽象意义上的像素,程序用它来定义界面元素。它作为一个与实际密度无关的单位,帮助程序员构建一个布局方案(界面元素的宽度,高度,位置)。 <br style="word-wrap:break-word"> 一个与密度无关的像素,在逻辑尺寸上,与一个位于像素密度为 160DPI的屏幕上的像素是一致的,这也是Android平台所假定的默认显示设备。在运行的时候,平台会以目标屏幕的密度作为基准,“透明地”处理所 有需要的DIP缩放操作。要把密度无关像素转换为屏幕像素,可以用这样一个简单的公式: pixels &#61; dips * (density / 160)。举个例子,在 DPI为 240的屏幕上, 1个 DIP等于 1.5个物理像素。我们强烈推荐你用 DIP来定义你程序的界面布局,因为这样可以保证你的 UI在各种分辨率的屏幕上都可以正常显示。<br style="word-wrap:break-word"> <span style="word-wrap:break-word; font-size:12px">为了简化程序员面在对各种分辨率时的困扰,也为了具备各种分辨率的平台都可以直接运行这些程序, Android平台将所有的屏幕以密度和分辨率为分类方式,各自分成了三类: </span><br style="word-wrap:break-word"> <span style="word-wrap:break-word; font-size:12px">·三种主要的尺寸:大,正常,小; </span><br style="word-wrap:break-word"> <span style="word-wrap:break-word; font-size:12px">·三种不同的密度:高( hdpi),中( mdpi)和低( ldpi)。 【DPI是“dot per inch”的缩写,每英寸像素数。】</span><br style="word-wrap:break-word"> 如果需要的话,程序可以为各种尺寸的屏幕提供不同的资源(主要是布局),也可以为 各种密度的屏幕提供不同的资源(主要是位图)。除此以外,程序不需要针对屏幕的尺寸或者密度作出任何额外的处理。在执行的时候,平台会根据屏幕本身的尺寸 与密度特性,自动载入对应的资源,并把它们从逻辑像素( DIP,用于定义界面布局)转换成屏幕上的物理像素。<br style="word-wrap:break-word"> <br style="word-wrap:break-word"> <br style="word-wrap:break-word"> </span>
<p align="left" style="word-wrap:break-word; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px"> 首先是几个基本概念:</p>
<p align="left" style="word-wrap:break-word; ma
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP