Android屏幕相关知识
2016-02-26 15:42
676 查看
Android屏幕相关知识
屏幕参数
屏幕大小对角线的长度,比如我们常见的4.7寸/5.5寸。
分辨率
手机屏幕像素点的个数,比如720*1080,就是宽有720个像素点,高有1080个像素点。
PPI/DPI
每英寸像素,我们计算的话就是对角线上的像素点数除以屏幕大小得到的。
手机屏幕密度
在android系统中,系统定义个几个标准的DPI值,用来作为固定的DPI。我们在开发中美工会做不同屏幕密度的图给开发人员,具体对照关系如下:
密度 | ldpi | mdpi | hdpi | xhdpi | xxhdpi |
---|---|---|---|---|---|
密度值 | 120 | 160 | 240 | 320 | 480 |
分辨率 | 240*320 | 320*480 | 480*800 | 720*1280 | 1080*1920 |
独立像素密度 dp
由于每个厂商的android手机的具有的不同的大小尺寸和不同像素密度的屏幕,屏幕尺寸碎片化严重。导致同样像素大小的长度,在不同的屏幕上显示长度不同。相同长度的屏幕,高密度的屏幕包含更多的像素点。android系统是哟个mdpi密度值为160的屏幕作为标准,在这个屏幕上1dp=1px。其他屏幕通过比例进行换算,如下:
mdpi | 1dp=1px |
---|---|
hdpi | 1dp=1.5px |
xhdpi | 1dp=2px |
xxhdpi | 1dp=3px |
单位换算
而我们在实际开发中考虑到屏幕适配,我们在布局文件中尽量使用与屏幕的物理参数无关的单位如dp和sp,而不用px;在程序中,也可以很方便的对这些单位进行转换,可将下面代码作为工具类保存在项目中。public class DensityUtil { /** * 将dip或dp值转换为px * * @param context * @param dpValue * @return */ public static int dip2px(Context context, float dpValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); } /** * 将px值转换为dip或dp * * @param context * @param pxValue * @return */ public static int px2dip(Context context, float pxValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); } /** * 将px值转换为sp * * @param context * @param pxValue * @return */ public static int px2sp(Context context, float pxValue) { final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (pxValue / fontScale + 0.5f); } /** * 将sp值转换为px * * @param context * @param pxValue * @return */ public static int sp2px(Context context, float spValue) { final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (spValue * fontScale + 0.5f); } /** * 获得屏幕物理像素width * * @param context * @return */ public static int getScreenWidth(Activity context) { DisplayMetrics dm = new DisplayMetrics(); context.getWindowManager().getDefaultDisplay().getMetrics(dm); return dm.widthPixels; } /** * 获得屏幕物理像素height * * @param context * @return */ public static int getScreenHeight(Activity context) { DisplayMetrics dm = new DisplayMetrics(); context.getWindowManager().getDefaultDisplay().getMetrics(dm); return dm.heightPixels; } }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析