1.屏幕单位
名称 单位缩写
单位全拼
介绍
屏幕尺寸'' 或 ininch屏幕的大小,通常用屏幕对角线的长度表示.单位是寸屏幕分辨率pxpixels 整个屏幕的像素数,一般用屏幕的像素宽度(水平像素数)乘以像素高度表示,形如1280x720,
反之分辨率为1280x720的屏幕,像素宽度不一定为1280
屏幕密度 dpi
dots per inch
每英寸中的像素数。计算公式:屏幕分辨率/屏幕尺寸,
打印分辨率 dpi
dots per inch
dpi 原是印刷上的记量单位,意指每平方英寸上,所印刷的网点数。
在android中是每英寸中的像素点数,计算公式: (√(横向分辨率^2+纵向分辨率^2))/屏幕尺寸)
图像的采样率 ppi
pixels per inch
ppi才是是图像分辨率的单位,在图像中,每英寸所包含的像素数。
数码相机拍出来的图片因品牌或生产时间不同可能有所不同,常见的有72ppi,180ppi和300ppi
2.长度单位
名称单位缩写单位全拼介绍像素pxpixels “像素”(Pixel) 是由 Picture(图像) 和 Element(元素)这两个单词的字母所组成的,是用来计算数码影像的
一种单位,若把影像放大数倍,会发现这些连续色调其实是由许多色彩相近的小方点所组成,这些小方点就是
构成影像的最小单位“像素”(Pixel)。外国语缩写 PX或PiXel。
比例像素spscaled pixels带比例的像素,android中主要用它处理字体的大小,设置字体大小的最佳单位。设备独立像素dip/dpdevice independent pixels 长度单位,根据具体平台屏幕密度的不同最终转换为相应的像素长度,具体转换规则是:
1dp = (目标屏幕密度/标准密度)*px, 标准密度为160dpi,例如,1dp长度在密度为160dpi
的平台表示一个像素的长度,而在240dpi的平台则表示1.5个像素的长度这个和设备硬件有关,
一般为了支持WCGA、HVGA和QVGA推荐使用这个,不依赖于像素。等同于dp
英寸ininches通常用屏幕对角线的长度点数ptpoints一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用毫米mmmillimeters
3.取得常用屏幕参数的方法
1 public MySystemParams(Activity activity) {
2 DisplayMetrics dm =
new DisplayMetrics();
3 activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
4 screenWidth =
dm.widthPixels;
5 screenHeight =
dm.heightPixels;
6 densityDpi =
dm.densityDpi;
7 scale =
dm.density;
8 fontScale =
dm.scaledDensity;
9
10 screenOrientation = screenHeight > screenWidth ?
SCREEN_ORIENTATION_VERTICAL
11 : SCREEN_ORIENTATION_HORIZONTAL;
12 }
4.px,dp,sp单位转换工具类
1 /**
2 * Android大小单位转换工具类
3 */
4 public class PxDpSpUtil {
5 /**
6 * 将px值转换为dip或dp值,保证尺寸大小不变
7 *
8 * @param pxValue
9 * @param scale
10 * (DisplayMetrics类中属性density)
11 * @return
12 */
13 public static int px2dip(
float pxValue,
float scale) {
14 return (
int) (pxValue / scale +
0.5f);
15 }
16
17 /**
18 * 将dip或dp值转换为px值,保证尺寸大小不变
19 *
20 * @param dipValue
21 * @param scale
22 * (DisplayMetrics类中属性density)
23 * @return
24 */
25 public static int dip2px(
float dipValue,
float scale) {
26 return (
int) (dipValue * scale +
0.5f);
27 }
28
29 /**
30 * 将px值转换为sp值,保证文字大小不变
31 *
32 * @param pxValue
33 * @param fontScale
34 * (DisplayMetrics类中属性scaledDensity)
35 * @return
36 */
37 public static int px2sp(
float pxValue,
float fontScale) {
38 return (
int) (pxValue / fontScale +
0.5f);
39 }
40
41 /**
42 * 将sp值转换为px值,保证文字大小不变
43 *
44 * @param spValue
45 * @param fontScale
46 * (DisplayMetrics类中属性scaledDensity)
47 * @return
48 */
49 public static int sp2px(
float spValue,
float fontScale) {
50 return (
int) (spValue * fontScale +
0.5f);
51 }
52 }
转载于:https://www.cnblogs.com/sjjg/p/4855199.html
相关资源:JAVA上百实例源码以及开源项目