网页上定义字体大小有常见三种单位,px、em、ptcss
px是pixel缩写,是基于像素的单位.在浏览网页过程当中,屏幕上的文字、图片等会随屏幕的分辨率变化而变化,一个100px宽度大小的图片,在800×600分辨率下,要占屏幕宽度的1/8,但在1024×768下,则只占约1/10。因此若是在定义字体大小时,使用px做为单位,那一旦用户改变显示器分辨率从800到1024,用户实际看到的文字就要变“小”(天然长度单位),甚至会看不清,影响浏览。 html
em:即%,是相对单位,是一个相对长度单位,最初是指字母M的宽度,故名em。现指的是字符宽度的倍数,用法相似百分比,如:0.8em, 1.2em,2em等。一般1em=16px。,通常用来测量长度的通用单位(例如元素周转的页边空白和填充),当用于指定字体大小时,em单位是指父元素的字体大小。web
在一个页面上给定了一个父元素的字体大小,这样就能够经过调整一个元素来成比例的改变全部元素大小.它能够自由缩放,好比用来制做可伸缩的样式表。shell
PT是point(磅)缩写,是一种固定长度的度量单位,大小为1/72英寸。若是在web上使用pt作单位的文字,字体的大小在不一样屏幕(一样分辨率)下同样,这样可能会对排版有影响,但在Word中使用pt至关方便。由于使用Word主要目的都不是为了屏幕浏览,而是输出打印。当打印到实体时,pt做为一个天然长度单位就方便实用了:好比Word中普通的文档都用“宋体 9pt”,标题用“黑体 16pt”等等,不管电脑怎么设置,打印出来永远就是这么大。浏览器
英寸,1 英寸约等于2.54厘米,主要用来描述手机屏幕的大小。
bash
DPI = Dots Per Inch app
PPI = Pixel Per Inch 字体
两个参数的区别就在于Dot和Pixel的区别,dot值的是显示器上每个物理的点,而pixel指的是屏幕分辨率中的最小单位。这个两个难道会不同么?会!当一个像素须要多于一个屏幕上的物理点来显示的时候dot就跟pixel不同了。这个有另外一个叫法叫作dppx(dot per pixel),即每一个像素中有多少个点。大部分的显示器中一个像素即一个点,但目前一些比较好的屏幕和一些手机屏幕中dppx会大于1。好比说Mac Retina,iPhone,HTC One等。 相信你们都遇到过一些人的电脑屏幕,看上去老是那么傻大傻大的。就是由于他们把分辨率调的过低致使ppi变低了,让画面看上去那么的不协调。看下面两张图片,我在一个1366x768分辨率的显示器上把分辨率分别设置为1366x768和1024x768所显示的效果。 ui
1024 x 768 spa
1366 x 768
可是大可能是状况你们并不会把这两个名词分的那么清楚,因此若是这两个出现的时候基本上都表达的是同一个意思,即PPI(每英寸中有多少个像素)。
PPI=屏幕对角线像素点数/屏幕对角线长度=( √ (屏幕横向像素点^2 + 屏幕纵向像素点^2)/对角线长度)
举例说明:若一款手机屏幕分辨率为720px*1280px,4.3英寸。则点密度为 √ (720^2 +1280^2) /4.3 = 342ppi。连接
分辨率这个词在不少地方都有,好比相机、视频、扫描仪。这里说的就是显示器的分辨率。显示器是由一个个像素点(pixel)所组成的,通常所说的显示器分辨率是1280x720就表示这个显示器水平方向有1280个像素,垂直方向上有720个像素。可是并不是分辨率越高屏幕显示效果越好,还须要根据屏幕的大小来决定。也就是要看像素的密度(pixel density),这个指标就是DPI(Dots Per Inch)或者PPI(Pixels Per Inch),即英尺屏幕上像素或者是点的个数。
6.xxxhdpi: dpi范围为480~560
private void getDpi() {DisplayMetrics dm = getResources().getDisplayMetrics();Log.i("TAG", "density = " + dm.density);Log.i("TAG", "densityDpi = " + dm.densityDpi);}复制代码
density = 2densityDpi = 320复制代码
高度:1920 / 3 = 640dp,咱们在设计控件的宽度时要注意不能超过设备的最大宽度值。
public static float applyDimension(int unit, float value,DisplayMetrics metrics) {switch (unit) {case COMPLEX_UNIT_PX:return value;case COMPLEX_UNIT_DIP:return value * metrics.density;case COMPLEX_UNIT_SP:return value * metrics.scaledDensity;case COMPLEX_UNIT_PT:return value * metrics.xdpi * (1.0f/72);case COMPLEX_UNIT_IN:return value * metrics.xdpi;case COMPLEX_UNIT_MM:return value * metrics.xdpi * (1.0f/25.4f);}return 0;}复制代码
return value * metrics.density;复制代码
return value * metrics.scaledDensity;复制代码
一般咱们在给页面作UI适配时,会去找来不少台不一样的Android设备,其实咱们只须要到系统菜单中去设置density、scaledDensity和分辨率这些参数,而后就能够在一台Android设备上看到不一样Android设备上的页面展现效果,以huawei mate8手机为例,进入到系统设置菜单显示条目:
在终端输入adb shell wm查看支持的命令集:
更改和查看density命令:
更改和查看分辨率命令: