Android屏幕相关知识(一)
2016-06-28 23:54
351 查看
1.Android手机屏幕的分辨率和尺寸大小不一,千奇百怪,这在我们自定义view以及做屏幕适配的时候造成了一定的困难,要想高效的解决遇到的问题,需要我们毒地手机屏幕有一定的认识。
2.屏幕参数
1.屏幕大小:
指的是屏幕对角线的长度,用“寸”来表示,比如我们所说的4.7寸,5.5寸的手机。2.分辨率:
指的是手机屏幕的像素点个数,例如720x1080就是指的屏幕的分辨率,指的是宽有720个像素点,高有1080个像素点。3.PPI
每英寸像素(Pixels Per Inch),也叫作DPI(Dots Per Inch).它是有对角线的像素点个数除以屏幕的大小得到的。3.系统屏幕密度
每个厂商的Android手机具有不同的大小尺寸和像素密度的屏幕。Android系统如果要精确到每种DPI的屏幕,那基本上是不可能的,所以系统定义了几个标准的DPI值,作为手机的固定DPI.如下所示:4. 独立像素密度dp
正是各种屏幕的密度不同,导致同样大小的长度,在不同密度的屏幕上显示的长度不同,因为相同长度的屏幕,高密度的屏幕包含有更多的像素点。Android系统使用mdpi即密度值为160的屏幕作为标准。在这时候1px = 1dp。其他屏幕则要通过比例换算。例如同样是100dp的长度,在mdpi中为100px,而在hdpi中为150px。所以我们也可以得出各个密度值的换算公式。在mdpi中1dp = 1px,
在hdpi中1dp = 1.5px,
在xhdpi中1dp = 2px,
在xxhdpi中1dp = 3px。
5.px与sp,dip之间单位的转换
/** * 将px值转化成dip值,保证尺寸大小不变 * @param context * @param pxValues px值 * @return */ public static int px2dip(Context context, float pxValues) { // 获取当前屏幕显示的密度值 float density = context.getResources().getDisplayMetrics().density; return (int) (pxValues / density + 0.5f); // 加0.5f四舍五入 } /** * 将dip值转化成px值,保证尺寸大小不变 * @param context * @param dipValues dip值 * @return */ public static int dip2px(Context context, float dipValues) { // 获取当前屏幕显示的密度值 float density = context.getResources().getDisplayMetrics().density; return (int) (dipValues * density + 0.5f); // 加0.5f四舍五入 } /** * 将px值转换为sp值,保证文字大小不变 * @param context * @param pxValues * @return */ public static int px2sp(Context context, float pxValues) { // 获取当前字体显示的密度值 float fontDensity = context.getResources().getDisplayMetrics().scaledDensity; return (int) (pxValues / fontDensity + 0.5f); // 加0.5f四舍五入 } /** * 将sp值转换为px值,保证文字大小不变 * @param context * @param spValues * @return */ public static int sp2px(Context context, float spValues) { // 获取当前字体显示的密度值 float fontDensity = context.getResources().getDisplayMetrics().scaledDensity; return (int) (spValues * fontDensity + 0.5f); // 加0.5f四舍五入 }
相关文章推荐
- Android中的自定义注解
- android Binder的使用方式 示例
- Android事件分发机制之ViewGroup
- Android Studio使用教程
- android 电源管理介绍
- (OK) android update sdk - virtualbox nat port forwarding adb "device offline"
- ImageView+ViewPager+PhotoView实现朋友圈图片点击全屏查看支持放大缩小
- Android学习笔记1-AsyncTask的用法
- android中dip dp sp px pt等详解
- Android之POST方法的使用
- android google GMS服务包安装
- 如何调试Android SO中的init函数
- Android自定义View(二)
- Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包
- Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包
- android studio引入so库方法
- Android 使用Socket实现服务器与手机客户端的长连接七:定义消息体,区分是响应还是回复信息
- Android 使用Socket实现服务器与手机客户端的长连接七:定义消息体,区分是响应还是回复信息
- android 关机对话框添加重启功能
- Android,Gilde框架加载图片进内存。出现的Bitmap too large to be uploaded into a texture