快速掌握Android屏幕的知识点

一、首先来介绍下关于PX、PT、PPI、DPI、DP的知识

术语 说明 PX (pixel),像素,屏幕上显示数据的最基本的点 PT (point), 点1pt=1/72英寸 PPI (pixel per inch),每英寸像素数 DPI (dot per inch),每英寸点数 DP 即dip(Density-independent pixel), 设备独立像素1dp=160dpi时1px长度

其中px, pt, dp为长度单位,ppi和dpi为密度单位

密度 ldpi  mdpi hdpi xhdpi xxhdpi 密度值 120 160  240  320 480 分辨率  240*320 320*480 480*800 720*1280 1080*1920 图标大小 36*36  48*48  72*72  96*96  144*144

二、下面提供几个常用的方法

1、获取屏幕高度

public int getRealHeight(Activity activity) { int heightPixels = 0; Display display = activity.getWindowManager().getDefaultDisplay(); final int VERSION = Build.VERSION.SDK_INT; if(VERSION < 13) { display.getHeight(); }else if (VERSION == 13) { try { heightPixels = (Integer) Display.class.getMethod("getRawHeight").invoke(display); } catch (Exception e) { } } else { Point realSize = new Point(); try { Display.class.getMethod("getRealSize", Point.class).invoke(display, realSize); heightPixels = realSize.y; } catch (Exception e) { } } return heightPixels; }

2、获取屏幕密度

/** * 获取屏幕密度 * @return */ public static float getScreenDensity(Activity activity) { DisplayMetrics displayMetrics = new DisplayMetrics(); activity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); return displayMetrics.density; }

3、获取屏幕可操作区域宽度dp数目

/** * 获取屏幕可操作区域宽度dp数目 * * @param activity * @return */ public static float getScreenWidthDp(Activity activity) { return getScreenWidth(activity) / getScreenDensity(activity); }

4、获取屏幕高度可操作区域dp数目

/** * 获取屏幕高度可操作区域dp数目 * * @param activity * @return */ public static float getScreenHeightDp(Activity activity) { return getScreenHeight(activity) / getScreenDensity(activity); }

5、获取屏幕真实宽度dp数目

/** * 获取屏幕真实宽度dp数目 * * @param activity * @return */ public static float getRealWidthDp(Activity activity) { return getRealWidth(activity) / getScreenDensity(activity); }

6、获取屏幕真实高度dp数目

/** * 获取屏幕真实高度dp数目 * * @param activity * @return */ public static float getRealHeightDp(Activity activity) { return getRealHeight(activity) / getScreenDensity(activity); }

7、判断是否为平板

public static boolean isTablet(Activity activity) { return isMoreThan6Inch(activity) && isScreenSizeLarge(activity); } /** * 判断是否大于6英寸 * @param activity * @return */ public static boolean isMoreThan6Inch(Activity activity) { return getScreenInch(activity) >= 6.0; } /** * 判断设备是否为大尺寸屏幕 * * @param context * @return */ public static boolean isScreenSizeLarge(Context context) { return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE; }

总结

以上就是关于Android屏幕知识点的全部内容了,希望本文的内容对各位Android开发者们能有所帮助,如果有疑问大家可以留言交流。

时间: 2024-09-26 10:45:17

快速掌握Android屏幕的知识点的相关文章

快速掌握Android屏幕的知识点_Android

一.首先来介绍下关于PX.PT.PPI.DPI.DP的知识 术语 说明 PX (pixel),像素,屏幕上显示数据的最基本的点 PT (point), 点1pt=1/72英寸 PPI (pixel per inch),每英寸像素数 DPI (dot per inch),每英寸点数 DP 即dip(Density-independent pixel), 设备独立像素1dp=160dpi时1px长度 其中px, pt, dp为长度单位,ppi和dpi为密度单位 密度 ldpi  mdpi hdpi

一种粗暴快速的Android全屏幕适配方案

本文讲的是一种粗暴快速的Android全屏幕适配方案,由于Android碎片化严重,屏幕适配一直是开发中较为头疼的问题.面对市面上五花八门的屏幕大小与分辨率,Android基于dp与res目录名称来适配的方案已无法满足一次编写全屏幕适配的需求,为了达到最优的视觉效果,开发过程中总是需要花费较多资源进行适配.也有开发者给出了一些自己的解决方案.首先来分析一下一些常见的解决方案的现状: 1. 官方适配方案 – dp.dp是Android开发中特有的一个单位.与px不同,dp是基于屏幕像素密度的一种单

实用Android 屏幕适配方案分享

转载地址:http://blog.csdn.net/gao_chun/article/details/45645051 真正可用,并且简单易行,可以在多个屏幕大小和屏幕密度上有良好表现的Android 屏幕适配方案,已用在一款成熟互联网应用中,效果还不错. 说起android开发,UI界面的多机型适配,一向是个很重要的问题. 网上这方面的文章很多,面试的时候也经常会问到,大部分的内容都很类似,无外乎用dp,sp 不要用px之类老生常谈的问题. 但是会说的居多,实际可以执行的可行方案,很少有人会.

巧用第三方快速开发Android App 热门第三方SDK及框架

巧用第三方快速开发Android App 热门第三方SDK及框架 历经大半年的时间,终于是把这门课程给录制出来了,也就在今天,正式在慕课网上上线了 项目地址:巧用第三方快速开发Android App 热门第三方SDK及框架 这这篇博客也是专门来聊聊这门课程有什么不一样,首先,这门课程是比较针对于快速学习,快速上手的同学的,所以这是面向参加工作或者准备参加工作的同学所迫切需要的,因为只有你掌握了这些,对于你实际开发中才是有帮助的,当然,你要是还在校,那也没关系的,学习本身就是一法通万法,但是你们却

游戏-求大神解答,关于Android屏幕监听的问题

问题描述 求大神解答,关于Android屏幕监听的问题 1C 最近在学Android开发,打算做一个游戏,但有一个效果不知道如何实现(如图),当点击屏幕时方块上升松开时方块下降. 之前用java是监听按钮,有按下和松开两个函数,当按下时flag=1,松开时flag=2,然后根据flag在draw()画不同的状态.再在run()改坐标.实现动画. 现在Android用OnTouchListener监听SurfaceView没有松开屏幕的方法,不知道怎么搞了,求大神指导. 解决方案 有关Androi

怎么快速启动Mac屏幕保护程序

  你可曾想过在mac下直接使用快捷键打开屏幕保护? 貌似你并不是一个人,这就是今天我要展示给大家的主题啦.作为默认,Mac OS X并不存在这样的功能,我们将示范使用 自动机 (Automator) 系统创建一个系统服务来完成此类壮举,并使用自定义的快捷键来启动屏幕保护. 说白了,这个服务将会启动默认的屏保,这意味着无论在 偏好设置 桌面和屏保 中设置把屏保设置成什么,你都可以通过苹果菜单 找到并修改他. 最好的使用方法是,使用密码保护功能, 这样当你打算离开键盘或桌面的时候,即使敲击键盘也可

android 布局-Android屏幕缩放移动的问题

问题描述 Android屏幕缩放移动的问题 当画线画到屏幕边缘时,怎么自动缩小并移动屏幕,使线一直在屏幕范围内呢?求解答 解决方案 用getx gety吗 解决方案二: 不要想着屏幕移动,你就是控制坐标,和起始绘制数据在数据集中的索引就行了,比如开始从0画,移动后,变成从1开始话

android-当旋转Android屏幕时App自动加载数据

问题描述 当旋转Android屏幕时App自动加载数据 我打开我的应用时数据会自动加载,我的问题是:当屏幕是垂直的时候应用会从服务器上加载下数据,但当屏幕旋转的时候,它又重新加载数据,在垂直状态又重新加载,旋转也是,一直如此.我应该怎么做才能让它不重新加载数据,希望大家能帮我看看,应该如何处理. 程序代码如下: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setCont

图片-Android屏幕适配问题,菜鸟求助

问题描述 Android屏幕适配问题,菜鸟求助 如题, 本人菜鸟不知道怎么屏幕适配呀, 我用的是demin建立了两个文件, 一个是(1280x720的),另外一个是1920x1080的. 在里面写的尺寸.因为我们美工给我的图片都是px的. 换算如下 解决方案 做android开发,开源嘛,满市场都是凌乱的机型,总少不了适配这样或那样的型号.在这里分享一下自己在开发中用到的方法. 首先要介绍一下drawable-mdpi.drawable-hdpi-1280x800.drawable-hdpi.这