之间的区别是什么"px","浸","dp"和"sp"?
-
19-09-2019 - |
题
之间的区别是什么安卓单位的措施?
- px
- 浸
- dp
- sp
解决方案
从 安卓开发文件:
px
像素 -相当于实际素在屏幕上。在
英寸 -根据的物理尺寸画面。
1英寸=2.54厘米mm
毫米 -根据的物理尺寸画面。pt
点 -1/72of an inch基础的物理尺寸画面。dp 或 浸
密度-独立素-一个抽象的单元,是根据物理密度的屏幕上。这些单位是相对于一个160 dpi屏幕,这样一个dp是一个象素在160dpi屏幕上。比 dp-要素将改变用屏幕上的密度,但不一定 在直接的比例。注:编译器接受"浸"和 "dp",虽然"dp"更符合"sp"。sp
规模-独立素-这就像dp单元,但它也放大了用户的字体大小的偏好。建议你 使用这个单元时指定的字体大小,因此它们将被调整 对于这两个屏幕上的密度和用户的偏好。
从 解密度独立,在安卓:
+----------------+----------------+---------------+-------------------------------+
| Density Bucket | Screen Density | Physical Size | Pixel Size |
+----------------+----------------+---------------+-------------------------------+
| ldpi | 120 dpi | 0.5 x 0.5 in | 0.5 in * 120 dpi = 60x60 px |
+----------------+----------------+---------------+-------------------------------+
| mdpi | 160 dpi | 0.5 x 0.5 in | 0.5 in * 160 dpi = 80x80 px |
+----------------+----------------+---------------+-------------------------------+
| hdpi | 240 dpi | 0.5 x 0.5 in | 0.5 in * 240 dpi = 120x120 px |
+----------------+----------------+---------------+-------------------------------+
| xhdpi | 320 dpi | 0.5 x 0.5 in | 0.5 in * 320 dpi = 160x160 px |
+----------------+----------------+---------------+-------------------------------+
| xxhdpi | 480 dpi | 0.5 x 0.5 in | 0.5 in * 480 dpi = 240x240 px |
+----------------+----------------+---------------+-------------------------------+
| xxxhdpi | 640 dpi | 0.5 x 0.5 in | 0.5 in * 640 dpi = 320x320 px |
+----------------+----------------+---------------+-------------------------------+
+---------+-------------+---------------+-------------+--------------------+
| Unit | Description | Units Per | Density | Same Physical Size |
| | | Physical Inch | Independent | On Every Screen |
+---------+-------------+---------------+-------------+--------------------+
| px | Pixels | Varies | No | No |
+---------+-------------+---------------+-------------+--------------------+
| in | Inches | 1 | Yes | Yes |
+---------+-------------+---------------+-------------+--------------------+
| mm | Millimeters | 25.4 | Yes | Yes |
+---------+-------------+---------------+-------------+--------------------+
| pt | Points | 72 | Yes | Yes |
+---------+-------------+---------------+-------------+--------------------+
| dp | Density | ~160 | Yes | No |
| | Independent | | | |
| | Pixels | | | |
+---------+-------------+---------------+-------------+--------------------+
| sp | Scale | ~160 | Yes | No |
| | Independent | | | |
| | Pixels | | | |
+---------+-------------+---------------+-------------+--------------------+
更多信息也可以发现在 谷歌设计文件.
其他提示
几乎所有关于这种以及如何实现的最好支持的多个屏幕的不同规模和密度是很好的记录:
屏幕上的大小
实际的物理尺寸测量如屏幕上的对角线。为了简单起见,安卓团的所有实际的屏幕尺寸为四个 广义的大小:小,通常大,并加大。屏幕密度
像素数量之内的物理区域 屏幕;通常称为dpi(点每英寸)。例如,一个 "低"密度屏幕上已经减少素在一定的物理区域, 相比"正常"或"高"密度的屏幕。为了简单起见, 安卓团的所有实际的屏幕密度为六个广义 密度:"低"、"中"、"高"、超高,超高的, 额外的额外的额外高。方向
向屏幕,从用户的观点 图。这是横向或纵向的,意味着屏幕 比方面是广泛或高,分别为。要知道,不 只有做到不同的设备的工作在不同的方向的 默认,但可以改变方向,在运行时的用户 旋转设备。决议
总数理素 一个屏幕。当增加支持多个屏幕、应用程序做的 不工作直接有决议;应用程序应该关注的 只有屏幕上的大小和密度,作为指定的广义 尺寸、密度小组。密度独立素(dp)
一个虚拟的 像素的单位,则应使用当定义UI布局,以表达 布尺寸或位置在一个密度独立的方式。密度独立素是相当于一个物理素在160 dpi屏幕,这是基线密度假设的系统 "中的"密度的屏幕。在运行,该系统透明地处理 任何扩展的dp单位,如有必要,根据实际密度 屏幕中的使用。转换的dp单位素屏幕 简单:px = dp * (dpi / 160)
.例如,在一个240dpi屏幕,1dp 等于1.5物的像素。你应该始终使用dp单位时 定义应用程序的用户界面,以确保适当显示的你的用户界面上 屏幕用不同的密度。
如果你是任何严重关于发展一个应用程序,用于多种类型的设备,你应该已经读过的屏幕支持发展文件至少一次。除此之外,它始终是一件好事知道实际数量的活动,设有一个特定的屏幕配置。
我将详细阐述更多关于如何完全不dp转换要素:
- 如果上运行的一个载设备装置,
150 x 150 px
图像将带了150 * 150 dp
屏幕空间。 - 如果上运行的一个华电国际设备,
150 x 150 px
图像将带了100 * 100 dp
屏幕空间。 - 如果上运行的一个独特的设备,
150x150 px
图像将带了75 * 75 dp
屏幕空间。
周围的其他方法:说,你想增加一个图像到你的申请和需要填补一个 100 * 100 dp
控制。你需要创建不同大小的图像,为支持屏幕上的大小:
100 * 100 px
图像载设备150 * 150 px
像对华电国际200 * 200 px
像今天
px 像素 -点每规模相当于实际素在屏幕上。
在 英寸 -根据的物理尺寸画面。
mm 毫米 -根据的物理尺寸画面。
pt 点 -1/72of an inch基础的物理尺寸画面。
dp
密度 -独立素-一个抽象的单元,是根据物理密度的屏幕上。这些单位相对于160dpi视,因此一个 dp
是一个象素在160dpi屏幕上。比dp要素将改变用屏幕上的密度,
但不一定是直接成比例。注:编译器接受 dip
和 dp
, 虽 dp
更一致 sp
.
sp
规模的独立素 -这是喜欢的 dp
单元,
但它也放大了用户的字体大小的偏好。建议你用这个单元时指定的字体大小,
因此,他们将被调整为两个屏幕上的密度和用户的偏好。
采取的例子中的两个屏幕的相同的大小,但有一个屏幕上的密度的160dpi(每英寸点,即每英寸像素数)和其他240dpi。
Lower resolution screen Higher resolution, same size
Physical Width 1.5 inches 1.5 inches
Dots Per Inch (“dpi”) 160 240
Pixels (=width*dpi) 240 360
Density (factor of baseline 160) 1.0 1.5
Density-independent Pixels 240 240
(“dip” or “dp” or “dps”)
Scale-independent pixels
(“sip” or “sp”) Depends on user font size settings same
而且你应该清楚地了解关于以下概念:
屏幕上的大小:
实际的物理尺寸测量如屏幕上的对角线。为了简单起见,安卓团的所有实际尺寸的屏幕到 四个广义的大小:小,正常的,大型和超大。
屏幕上的密度:
数量内的像素的物理区域的屏幕;通常称为dpi(点每英寸)。例如,一个 "低"密度屏幕上已经减少素在一定的物理区域, 相比"正常"或"高"密度的屏幕。为了简单起见, 安卓团的所有实际的屏幕密度为四个广义 密度:低、中、高和额外的高。
方位:
定向的画面从用户的观点。这是横向或纵向的,意思是说 屏幕的方面比以是广泛或高,分别为。要知道 这不仅不同的设备的工作在不同的方向 通过默认,但可以改变方向,在运行时的用户 旋转设备。
决议:
总数理素在屏幕上。当增加对于支持多个屏幕、应用程序并不直接工作 与决议;应当以关注的唯一屏幕 尺寸、密度,作为指定的广义的尺寸、密度 小组。
密度独立素(dp):
一个虚拟素单元,则应使用当定义UI布局,表达布局或尺寸 位置在一个密度独立的方式。密度独立素 相当于一个物理上的象素160dpi屏幕,这是 基线密度假设的系统"中的"密度的屏幕。在运行,该系统透明地处理任何扩展的dp 单元,如有必要,根据实际密度的使用。转换的dp单位素屏幕是简单的:px=dp*(dpi /160).例如,在一个240dpi屏幕,1dp等于1.5物理 像素。你应该始终使用dp单位时限定你的 应用程序的用户界面,以确保适当显示的你的用户界面上屏幕 不同的密度。
参考: 安卓开发网站
dp
是 dip
.使用它的一切(保证金,填补,等等)。
使用 sp
为{文本的大小}只。
获得同样的大小不同的屏幕密度,安卓意味着这些单位素在运行,因此没有棘手的数学你要做。
看到差别 px
, dp
和 sp
在不同的屏幕的大小。
资料来源: 安卓编程:大牧场的书呆子引导
定义
px 或者点是 像素 实物屏幕上。
dpi 是每英寸像素的物理屏幕,并代表密度显示。
了 别名的几个密度
- 弃儿是所有关于(较低)~120dpi
- 载设备(中等)~160dpi
- 华电国际(高)~240dpi
- 大多数设备在2015年在这里
- 今天(高)~320dpi
- 苹果手机4/5/6,4
- 心(加额外的高)~480dpi
- 的关系5
- 。(超额外的额外高)~640dpi
浸 或 dp 都 密度-indenpendant素, 即他们对应或多或少素取决于物理的密度。
- 1dp=1px上载设备
sp 或 sip 是一个 规模的独立的像素.他们被缩小时 大文本 选择是在 设置 > 无障碍
- 1sp=1dp
- 1sp=1.2dp有辅助文大
什么使用?
使用 sp 对于文本的大小。
使用 dp 对于其他一切。
来源3:(数据来源3下面给出)
这些都是维值的定义在XML。一个尺寸是指定 有一些随后的测量单位。例如:10px,2, 5sp.以下单位的测量支持的问题:
dp
密度独立素-一个抽象的单元,是基于 物理密度的屏幕上。这些单位相对于160dpi (点每英寸)的屏幕,在其1dp大致等于1px.时 上运行的密度更高的屏幕,像素数,用来绘制 1dp是按比例扩大的一个因素适用于屏幕的新闻部。同样,当在一个较低的密度屏幕,像素数的使用 为1dp是按比例缩小。比dp要素将会改变的 屏幕上的密度,但不一定是直接成比例。使用dp 单位(而不是px单元)是一个简单的解决方案,以使图 尺寸在你的布局调整适当地用于不同的屏幕 密度。换句话说,它提供了一致性对于现实世界 尺寸的UI元素在不同的设备。
sp
规模的独立素-这就像dp单元,但它也是 放大用户的字体大小的偏好。它建议您使用 这个单位在指定的字体大小,因此它们将被调整为 这两个屏幕上的密度和用户的优先选择。
pt
点-1/72of an inch基础的物理尺寸画面。
px
像素的-相当于实际素在屏幕上。这个单位的 措施不是建议,因为实际表示可以改变 跨设备;每个设备可能有不同的像素数,每 英寸的和可以有更多或更少的总素可以在屏幕上。
mm
毫米-基于物理尺寸画面。
在
英寸-基于物理尺寸画面。
注: 一维是一个简单的资源引用的使用价值提供了在该名称属性的(没有姓名的XML文件)。因此,你可以结合尺寸的资源与其他简单的资源,在一个XML文件,在一个元素。
基本上唯一的时间里px适用是一个素,这就是如果你想要一个像素在屏幕上就像在情况下的一个分:
在>160dpi,你可以获得2-3素,
在>120dpi,轮到0。
px
像素的-相当于实际素在屏幕上。
dp或沾
密度独立素-一个抽象的单元,是根据物理密度的屏幕上。这些单位相对于160dpi屏幕,这样一个dp是一个象素在160dpi屏幕上。
使用的dp:
密度的独立性 - 你的应用程序实现了"密度的独立性"的时保留的物理尺寸(从用户的角度看)的用户接口的因素时,显示在屏幕上有不同的密度。(e)图像应该看起来是一样的大小(不放大或缩小),在不同类型的屏幕。
sp
规模的独立素-这就像dp单元,但它也放大了用户的字体大小的偏好。
http://developer.android.com/guide/topics/resources/more-resources.html#Dimension
在那里使用什么&之间的关系px&dp?
密度独立素(dp)
一个虚拟素单元,则应使用当定义UI布局,表达布局尺寸或位置在一个密度独立的方式。如上所述,密度独立素是相当于一个物理上的象素160dpi屏幕,这是基线密度假设的系统"中的"密度的屏幕。在运行,该系统透明地处理任何扩展的dp单位,如有必要,根据实际密度的使用。转换的dp单位素屏幕 简单:
px=dp*(dpi/160).
例如,在一个240dpi屏幕,1dp等于1.5物的像素。你应该始终使用dp单位时,确定应用程序的用户界面,确保 适当显示的你的用户界面上的屏幕与不同的密度。
了解素dp,反之亦然是非常必要(特别是给予准确的dp值的创作团队)
dp = px * 160 / dpi
MDPI = 160 dpi || Therefore, on MDPI 1 px = 1 dp
For example, if you want to convert 20 pixel to dp, use the above formula,
dp = 20 * 160 / 160 = 20.
So, 20 pixel = 20 dp.
HDPI = 240 dpi - So, on HDPI 1.5 px = 1 dp
XHDPI = 320 dpi - So, on XHDPI 2 px = 1 dp
XXHDPI = 480 dpi - So, on XXHDPI 3 px = 1 dp
For example, let us consider Nexus 4.
If 24 pixels to be converted to dp and if it is a Nexus 4 screen, developers can
convert it to dp easily by the following calculation :
dp = 24 * 160 / 320 = 12 dp
Screen dimension:
768 x 1280 pixel resolution (320 ppi or 320dpi)
Optional (screen size):
4.7" diagonal
- 试图得到所有像素数值在偶数从创造性的队伍。否则精确失去会发生的同时,乘以0.5.
px
这是上面所解释的。尽量避免在布局的文件。但也有一些情况下,其中素是必需的。例如,列表视图分隔线。px是更好地在这里给一个像素的行为分为所有在屏幕的决议。
sp
使用sp为字体大小。然后只字体内部应用程序将会改变,同时设备的字体大小变化(即,显示->上的字体设备)。如果你想保持静态型字体内部的应用程序,可以得到的字体维dp。在这样的情况下,它将永远不会改变。开发者可以获得这样一种要求对于一些特定的屏幕,对于这一点,开发商可以使用dp而不是sp。在所有其他情况下,sp建议。
你可以看到的差别 px
和 dp
从下面的图像,你还可以找到 px
和 dp
不能保证相同的物理尺寸上不同的屏幕。
任何有关的尺寸的文本而必须使用的外观 sp
或 pt
.然而,任何事情关系到尺寸的控制,布局,等等。必须使用 dp
.
你可以同时使用 dp
和 dip
在它的地方。
我只会使用dp。
有很多谈谈使用"sp"字体大小,虽然我理解这一点,我不认为这是一件正确的事情要做,从设计的角度来看。你可以最终打破你的设计如果用户有一些靠不住的字体大小的选择,并使用户最终会指责 该应用程序, 和不是他们自己的生活选择。
此外,如果采取一sp-字体应用程序上的160dpi片,你会发现 的一切 会扩大...但你的字体,这是要去看看小小的比较。它不是一个好好看看。
虽然这个想法的"sp"字体设有一个很好的心脏,这是一个贫穷的想法。坚持dp的一切。
sp=规模的独立素
dp=浸=密度独立的像素
dpi=每英寸点
我们应该避免使用 sp.
我们应该使用 dp 支持多个屏幕。
安卓支持不同的屏幕决议,
- 弃儿是所有关于(较低)~120dpi
- 载设备(中等)~160dpi
- 华电国际(高)~240dpi
- 今天(高)~320dpi
- 心(加额外的高)~480dpi
- 。(超额外的额外高)~640dpi
一个120dp弃儿是所有关于设备有120素在1英寸大小。
同样对于其他密度...
我们作为软件工程师应该使用这个转换公式:
像素=dp*(密度/160)
因此240dpi设备的1dp会有= 1 * (240/160) = 3/2 = 1.5 像素。
480dpi设备的1dp将有=1*(480/160)=3素。
使用这个1.5和3素的知识,一个软件工程师设计的布局不同的密度。
检查视参数的任何设备:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
Toast.makeText(
this,
"4:" + metrics.heightPixels + "," + metrics.density + ","
+ metrics.densityDpi, Toast.LENGTH_LONG).show();
之间的差异 dp
和 sp
单位所提到的作为"用户的字体大小的偏好"通过的答案的复制从官方文件中可以看出在运行的时间可通过改变 Settings->Accessibility->Large Text
选项。
Large Text
选择部队的文本成为 1.3
次大。
private static final float LARGE_FONT_SCALE = 1.3f;
这可能是好的当然供应商的依赖性,因为它位于 包/应用程序的设置.
dpi
- 点每英寸
- 测素密度。
px-像素
- 为映射屏幕素
pt-点
- 关于1/72of an inch,相对于物理屏幕上的大小。
在英寸 -相对于物理屏幕上的大小(1英寸=2.54厘米)。
mm毫米 -相对于物理屏幕上的大小。
sp规模的独立的像素。
- 根据用户的字体大小的偏好。
- 字体应在'sp'.
浸
- 浸==dp
- 密度独立的像素。
- 它不同于在屏幕上的密度。
- 在160dpi屏幕,1dp=1素。
- 使用dp除的文字体大小。
在标准、dp和sp的使用。sp字体大小和dp的一切。
公式转换的单元:
px=dp*(dpi/160);
Density Bucket -> Screen Display => Physical Size => Pixel Size
ldpi -> 120 dpi => 0.5 x 0.5 in => 0.5 in * 120 dpi = 60x60 px
mdpi -> 160 dpi => 0.5 x 0.5 in => 0.5 in * 160 dpi = 80x80 px
hdpi -> 240 dpi => 0.5 x 0.5 in => 0.5 in * 240 dpi = 120x120 px
xhdpi -> 320 dpi => 0.5 x 0.5 in => 0.5 in * 320 dpi = 160x160 px
xxhdpi -> 480 dpi => 0.5 x 0.5 in => 0.5 in * 480 dpi = 240x240 px
xxxhdpi -> 640 dpi => 0.5 x 0.5 in => 0.5 in * 640 dpi = 320x320 px
屏幕上的大小 在 Android
被分为不同的类别 small
, medium
, large
, extra large
, double-extra
和 triple-extra
.屏幕上的密度的金额素内的一个区域(如英寸)的屏幕上。一般来说它是测量点的每英寸(dpi)。屏幕上的密度分为低、中、高和额外的高。决议为总数的像素。
- dp: 密度的独立素,变化的基础上屏幕上的密度。在160dpi屏幕,1dp=1素。除了字体大小、使用dp。
- 浸: 浸==dp。在先前安卓版本浸用和后改为dp。
- sp: 规模的独立素,缩根据用户的字体大小的偏好。字体应该使用sp。
- px: 我们通常的标准的像素映射到屏幕上的像素。
- 在: 英寸,对于实物屏幕上的大小。
- mm: 毫米,相对于物理屏幕上的大小。
- pt: 1/72of an inch,相对于物理屏幕上的大小。
公式之间的转换单元
px = dp * (dpi / 160)
dp px设备
下面的示例可以帮助更好地理解。扩发生基于桶大小的120(弃儿是所有关),160(载设备),240(华电国际),320(今天),480(心)和640(!).谷歌建议的比例,用于设计是3:4:6:8:12弃儿是所有关于:载设备:华电国际:今天:小心
一个150像素的X个150像素的图片将占据,
- 150dp X150dp视空间中载设备
- 100dp X100dp视空间中华电国际
- 75dp X75dp视空间中的今天
你可以使用以下DPI计算器,以解决你的图像大小和其他方面时,你希望有一个统一的用户界面设计在所有设备。
DPI计算器在Java
/*
Program output
LDPI: 165.0 X 60.0
MDPI: 220.0 X 80.0
HDPI: 330.0 X 120.0
XHDPI: 440.0 X 160.0
XXHDPI: 660.0 X 240.0
XXXHDPI: 880.0 X 320.0
*/
public class DPICalculator {
private final float LDPI = 120;
private final float MDPI = 160;
private final float HDPI = 240;
private final float XHDPI = 320;
private final float XXHDPI = 480;
private final float XXXHDPI = 640;
private float forDeviceDensity;
private float width;
private float height;
public DPICalculator(float forDeviceDensity, float width, float height){
this.forDeviceDensity = forDeviceDensity;
this.width = width;
this.height = height;
}
public static void main(String... args) {
DPICalculator dpiCalculator = new DPICalculator(240,330,120);
dpiCalculator.calculateDPI();
}
private float getPx(float dp, float value) {
float px = dp * (value / forDeviceDensity );
return px;
}
private void calculateDPI() {
float ldpiW = getPx(LDPI,width);
float ldpiH = getPx(LDPI,height);
float mdpiW = getPx(MDPI,width);
float mdpiH = getPx(MDPI,height);
float hdpiW = getPx(HDPI,width);
float hdpiH = getPx(HDPI,height);
float xdpiW = getPx(XHDPI,width);
float xdpiH = getPx(XHDPI,height);
float xxdpiW = getPx(XXHDPI,width);
float xxdpiH = getPx(XXHDPI,height);
float xxxdpiW = getPx(XXXHDPI,width);
float xxxdpiH = getPx(XXXHDPI,height);
System.out.println("LDPI: " + ldpiW + " X " + ldpiH);
System.out.println("MDPI: " + mdpiW + " X " + mdpiH);
System.out.println("HDPI: " + hdpiW + " X " + hdpiH);
System.out.println("XHDPI: " + xdpiW + " X " + xdpiH);
System.out.println("XXHDPI: " + xxdpiW + " X " + xxdpiH);
System.out.println("XXXHDPI: " + xxxdpiW + " X " + xxxdpiH);
}
}
更多信息,请参阅以下链接。
http://javapapers.com/android/difference-between-dp-dip-sp-px-in-mm-pt-in-android/
- px-一个象素,同样作用的是什么CSS,JavaScript,等等。
- sp规模的独立素
- 浸密度的独立素
通常sp用于字体大小,同时沾是使用(也称为dp)对于其他人。
请阅读的答案,从社区wiki。以下提到的一些信息被认为除了上述答复。
sp=规模的独立素
dp=密度独立的像素
dpi=素密度
我已经通过上述答案...不找到他们完全正确的。sp文本的大小、dp布局范围的标准。但 sp文本的大小会打破的布局如果使用不小心 在大多数的设备。
sp采取textsize的设备,而dp采取的设备密度的标准(从未改变的装置) 说100sp文本可占用80%的屏幕上或者100%的画面取决于字体大小组在设备
你可以使用sp布局限还有,它将工作:) 没有标准的应用程序使用sp对整个文本
使用sp和dp文本的尺寸考虑UX。
- 不用sp文本在工具条(可以使用安卓量尺寸精度可适用于不同的屏幕大小dp)
- 不用sp文本小界定的按钮,非常小的文本,等等
有些人用巨大的字体大小在他们的电话对于更加可读性,给予他们的小硬编码尺寸的文本将是一个体验的问题。把sp文本如有必要,但要确保这不会打破布局。
同样,如果你有一个单一的应用程序支持的所有方面,增加。资产增加的应用程序的大小很多。但是现在!电话是常见的,所以我们必须包括资产。至少对图标在边的酒吧、工具和底吧。它能够更好地动矢量图像有一个统一和更好质量的图像所有屏幕上的大小。
还注意到,人们使用的定义的字体在他们的电话。那么缺乏一个字体可能会造成问题有关的间隔和所有。说文本的大小12sp为一个自定义的字体可以采取一些额外像素,比默认字体。
参照谷歌开发网站screendensities和basedensity详细序。https://developer.android.com/training/multiscreen/screendensities
我遇到了一个很好的文章关于设计安卓应用程序的用户界面为不同的屏幕决议,并且我想要离开这里只为某人寻找在这个区域。是的,我知道,它是以某种方式描述docs(及其中提到的上述员额),我读,但它不是为我好(是的,我可能是太愚蠢)).但仍不清楚我怎么设计的布局能够处理不同的屏幕上的大小。我讨厌DP概念和因此,当我需要实行"灵活的"UI布局不同的屏幕。(嘿iOS开发商-是的,你是正确的,它的故事情节的概念)。
安卓不坏UI概念,但是缺乏iOS故事情节特点,很遗憾。设计灵活的用户界面在安卓不是件容易的事情(在最佳)。
这里的文章帮助我了解怎么做到使布局不同的屏幕上的大小:
如何设计用户界面为安卓应用程序,用于大小不同的屏幕
设计一种应用程序的用户界面,用于大小不同的屏幕,我们最初的设计 满足最低需要的空间,为每个屏幕的大小。安卓定义 最小尺寸(dp)为每个广义的屏幕上的类型。这里是一个 安卓屏幕大小的准则。 当我们得到屏幕中的大小dp,这是不够的,我们设计 安卓应用程序的用户界面。每个屏幕的大小,我们需要准备的图形 和位的图像用于各密度。这里是一个机器屏幕密度 准则。
为简单的计算,我们可以按照3:4:6:8扩展之间的比率 四个广义的密度。如果我们创建了一个36×36素的图片 弃儿是所有关于设备,其余的密度图片大小会48×48载设备, 72×72华电国际和96×96喜欢的.
如何设计安卓应用程序的用户界面,在Photoshop
很多设计师都有问题的设计安卓应用程序的用户界面photoshop或其他的像素 基于图形设计工具,因为密度的独立单元,dp。设计师们不知道如何地图dp要素。谷歌也不给 一个明确的安卓UI设计指南,用于他们,虽然他们得到基本的 公式dp素和翻译。
作为的定义,1pd等于1px下160dpi设备(载设备).因此,我们要设计应用超安卓设备 载设备密度,我们可以确定我们的UI尺寸像素作为960素在宽度 和720像素在高度;按照同样的映射项规则,我们可以得到 以下安卓应用屏幕大小的用户界面设计准则:
加入:如果你有兴趣在"灵活"UI过,看一看这个图书馆: 安卓SDK,提供了一个新的大单元的sdp(可扩展dp)。这一单元的大小尺度的屏幕上的大小 (这也提到一个答案在这里,约 SDP
图书馆)
ADDED2 谷歌终于理解的有用性iOS Storeboard UI的概念,并且在这里不 ConstraintLayout
对于安卓世界: 建立一个响应的用户界面与ConstraintLayout
1) dp: (density independent pixels)
像素数量表示中的一个单元的dp将增加,因为屏决议增加了(当你有更多的点/每英寸像素数).相反地上的设备与较低的分辨率,像素数表示在单元的dp将减少。由于这是一个相对单位,它需要有一个基线进行比较。这个基准是一个160dpi屏幕上。这是公式如下: px = dp * (dpi / 160).
2) sp: (scale independent pixels)
这个单位的尺度根据屏幕dpi(类似于dp)以及用户的字体大小的偏好。
3) px: (pixels)
实际的象素点或在屏幕上。
更多详情可访问
屏幕上的大小 在安卓进行分类 ldpi
, mdpi
, hdpi
, xhdpi
, xxhdpi
和 xxxhdpi
. 屏幕密度 是的像素的一个区域内(如英寸)的屏幕上。一般来说它是测量点的每英寸(dpi
).
PX(Pixels):
- 我们通常的标准的像素映射到屏幕上的像素。
px
是意味着绝对的像素。这是使用如果你想得到的绝对像素的宽度或高度。不建议。
DP/DIP(Density pixels / Density independent pixels):
dip == dp
.在先前安卓版本浸使用和以后改变dp
.这是可替换的px
.一般来说,我们永远不会使用
px
因为它是绝对的价值。如果你使用px
设置宽度或高度,并且如果申请是正在下载成不同的屏幕大小的设备,然后,查看会不伸按屏幕上。dp
强烈建议使用的地方px
.使用dp
如果你想更宽和高度成长和收缩动态的基础上。如果我们得到
dp/dip
, ,安卓将自动计算的尺寸像素的基础上,160素大屏幕上。
SP(Scale independent pixels):
缩根据用户的字体大小的偏好。字体应该使用
sp
.当提及的字体大小适合不同的屏幕的尺寸,使用
sp
.这是类似于dp
.使用sp
特别是对于字体大小成长和收缩动态的基础上屏幕尺寸
安卓文件说:
当指定的尺寸,一直使用
dp
或sp
单元。一个dp
是 一个密度独立素相对应的物理尺寸的 像素在160dpi
.一个sp
是相同的基本单元,但是放大的 用者的首选文本的大小(这是一个规模独立素),所以你 应该使用这种测量单位时,界定文本的大小
屏幕上的移动电话的是成千上万的小点称为 像素(px).像素是最小的元素都使画面。更像素数量,以使图片或措辞时,更清晰它变得和使智能手机屏幕上的更易于阅读。
屏幕决议是衡量方面的像素数在屏幕上。屏幕决议是一个通常使用的规范时,购买设备,但是实际上也没有那时非常有用的设计安卓,因为思想的屏幕词素忽略了这一概念的物理尺寸,对于触摸设备是很重要的。
密度的独立素(dp或dip) 能让设计者创造的资产中出现了预期的方式,无论该决议或密度的目标设备。
一个密度的独立素(dp或dip)等于一像素的基线密度的160dpi(点每英寸)。
1px/1dp=160dpi/160dpi
2px/1dp=320dpi(2)/160dpi
在那里,
新闻部的每英寸点
因此,在320dpi,1dp等于2px。
公式
px/dp=dpi/160dpi
每英寸点(新闻部)的清晰度(即,密度的照点)在显示器屏幕上。圆点每英寸对于给定图象的决议将有所不同的基础上的整体画面大小由相同数量的像素是被分散在不同的空间。
工作与密度的独立素有助于我们处理这样的情况,你有两个设备有相同的像素的分辨率,但是不同的空间量。假设的情况下,一个平板电脑和电话具有同样的像素的分辨率1280 800素(160dpi)和800 1280素(320dpi)分别。
现在因为一片是在基线密度(160dpi)其物理和密度独立的尺寸像素都是相同的,1280由800人。手机在另一方面具有较高素的密度,因此它具有半数作为许多密度的独立素作为理的像素。这样一个电话有400通过640密度独立的像素。因此,使用一个密度独立素使得更容易精神的图片,片具有更多的空间比的电话。
同样,如果你有两个设备有类似的屏幕的大小,但是不同的像素的密度,说是一个800 1280素(320dpi),另有400通过640素(160dpi),我们不需要定义完全不同的布局,对这两个装置,因为我们可以测量资产的条款密度的独立素是相同的两个设备。
800 1280素(320dpi)=400通过640密度的独立素(dp)
400通过640素(160dpi)=400通过640密度的独立素(dp)
规模的独立素(sp) 是首选的部为字体大小。对于性的目的,安卓允许用户自定义他们的设备的字体大小。用户有麻烦阅读的文本可以增加他们的设备的字体大小。你通常可以找到这个选项中的显示设置你的手机或平板电脑上的下字体大小。它往往也可以通过无障碍设置。
与规模的独立素,16sp是完全一样16dp当装置的字体大小正常或100%。但是,当设备的字体大小很大,例如125%,16个sp将翻译成20dp或1.25倍16.
如果你使用dp为的单元,用于字体大小,那么这一段文字有一个具体的物理尺寸,无论如果用户定制的设备的字体大小。使用sp单位将使得一个更好的经验,为人与受损的视力。
参考: 私, 谷歌
sp:规模的独立素
你应该使用它的文本,因为它自动地按照字体大小正在使用的用户在他的设备。
px:像素或图像素是单点在屏幕上
在回答这个问题之前,让我数量减少单位第一。所以在这里你去: dp或沾 都是相同的,被称为 密度独立素.
1.px -代表的像素。像素是单一点,指在一个屏幕。通常在移动的行业,它是衡量生产者价格指数(每英寸像素数).屏幕决议是直接成比例的私人参与基础设施,较大的每英寸像素数较高的屏幕决议。
例如,如果你画出一个图像的一个尺寸 200px * 200px, 然后它的外观,必须不同于高分辨率装置相对低分辨率设备。原因是 200px 图像在分辨率较低的电话将被看起来比上一个高分辨率设备。
下面的图像显示一项决议的同样的图像在不同的手机-
2.浸或dp -一个抽象的单元,是根据物理密度的屏幕上。这些单位是相对于一个 160 dpi屏幕,这样一个dp是一个象素上 160 dpi屏幕上。比dp要素将改变用屏幕上的密度,但不一定是直接成比例。"密度的独立性"指的是统一的显示的UI元素在屏幕上有不同的密度。
- 图像显示 80px(左侧的图像) 和 80dp(右侧图像).结帐的差异。
Dp等于一个物理素屏幕上的密度的 160.计算dp:
dp=(宽度(像素*160)/屏幕密度
3.sp -代表可扩展的像素。一般 sp 用于文字上的用户界面,以及 sp 保留的字体设置。例如,如果一个用户选择了一个大字体比 30sp 它会自动规模出现大根据用户的偏好。
我想提供一个简单的方法来了解 dp
.事实上,我认为 dp
是最简单的一个来理解。 dp
仅仅是一个物理长度的单元。它是相同的层面 mm
或 inch
.这只是便于我们来写 50dp
, 60dp
而不是 50/160 inch
或 60/160 inch
, 因为一个 dp
只是 1/160 inch
无论屏幕大小或决议。
唯一的问题是,安卓dpi的某些屏幕是不准确的。例如,一个画面分类,以160dpi可能有170dpi确。如此计算的结果 dp
是模糊的。它应当大致相同 1/160 inch
.
SDP -一个可扩展的小单元--基本上它不是一个单元,但尺寸的资源用于不同的屏幕的大小。
尝试 sdp 图书馆从忒.这是非常方便的解决单元的问题,你可以 迅速支持多个屏幕.
使用
android:paddingBottom="@dimen/_15sdp"
对于正和 android:layout_marginTop="@dimen/_minus10sdp"
对于负sdp
它具有同等价值在dp每个尺寸 values-sw<N>dp
文件夹(sw=smallestWidth).
注意力
使用它,小心!在大多数情况下,你仍然需要设计一种不同的布局。
例
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_minus10sdp"
android:paddingBottom="@dimen/_15sdp"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:includeFontPadding="false"
android:text="♡"
android:textColor="#ED6C27"
android:textSize="@dimen/_70sdp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:includeFontPadding="false"
android:text="U"
android:textColor="@android:color/black"
android:textSize="@dimen/_70sdp" />
</LinearLayout>
你可以使用数据库文本的大小,但我喜欢 ssp 对于文本的大小。
更多详细信息、检查 图书馆页。.