快速掌握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 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开发者们能有所帮助,如果有疑问大家可以留言交流。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, 屏幕分辨率
获取屏幕宽高
知识点掌握程度、php 必须掌握的知识点、知识点掌握等级、知识点掌握情况、如何掌握新知识点,以便于您获取更多的相关知识。

时间: 2024-10-14 21:13:35

快速掌握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

1.直接使用getWindow().getDecorView().getRootView() 直接使用getWindow().getDecorView().getRootView()是获取当前屏幕的activity.然而对于系统状态栏的信息是截不了,出现一条空白的.如下图:   主要到没,有一条白色边就是系统状态栏.看一下代码,很简单都加了注释了. //这种方法状态栏是空白,显示不了状态栏的信息 private void saveCurrentImage() { //获取当前屏幕的大小 int

使用WEB工具快速提高Android开发效率_Android

正所谓工欲善其事,必先利其器.学习并应用优秀的轮子,可以让我们跑的更快,走的更远.这里所指的工具是广义的,泛指能帮助我们开发的东西,或者能提高我们效率的东西,包括:开发工具,监测工具,第三方代码库等. 在Google的广大支持下,便捷开发Android程序的Native工具层出不穷.其实Android开发涉及到的范围也不小,一些Web工具有时候也会带来事半功倍的效果.有些甚至是一些native应用无法做到的.本文,将简单列举一下本人正在使用的一些工具,当然也会持续更新. 查找优秀的参考工程 co

Android屏幕锁屏弹窗的正确姿势DEMO详解_Android

在上篇文章给大家介绍了Android程序开发仿新版QQ锁屏下弹窗功能.今天通过本文给大家分享android锁屏弹窗的正确姿势. 最近在做一个关于屏幕锁屏悬浮窗的功能,于是在网上搜索了很多安卓屏幕锁屏的相关资料,鉴于网上的资料比较零碎,所以我在这里进行整理总结.本文将从以下两点对屏幕锁屏进行解析: 1. 如何监听系统屏幕锁屏 2. 如何在锁屏界面弹出悬浮窗 如何监听系统屏幕锁屏 经过总结,监听系统的锁屏可以通过以下两种方式: 1) 代码直接判定 2) 接收广播 1) 代码直接判定 代码判断方式,也

Android手机保持屏幕高亮方法_Android

一开始接触android应用项目时,在项目快上线时策划要求加个高亮,每次都是直接从网上百度一下,现在做游戏了,却还是这个需求,这里备份一下方便后续的查找,毕竟是自己写好且验证没问题的 :) 首先,在Activity里添加一下代码: 成员变量: private PowerManager.WakeLock wakeLock = null; 重写父类Activity的两个方法并添加一下逻辑: @Override public void onResume() { super.onResume(); ac

Android 屏幕双击事件的捕获简单示例_Android

在Android游戏开发中,我们可能经常要像PC操作一样在屏幕上双击.对于屏幕双击操作,Android 1.6版本以前并没有提供完善的手势识别类,Android 1.5的SDK中提供了android.view.GestureDetector.OnDoubleTapListener,但经测试无法正常工作,不知是何原因.最终我们的解决方案如下面的代码: Java代码 public class TouchLayout extends RelativeLayout { public Handler do

一种粗暴快速的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开发更高效_Android

在做Android 开发过程中,会遇到一些小的问题,虽然自己动手也能解决,但是有了一些小工具,解决这些问题就得心应手了,今天就为大家推荐一下Android 开发遇到的小工具,来让你的开发更高效. Vysor Vysor 是一个可以将手机的屏幕投影到电脑上,当然也可以操作,当我们做分享或者演示的时候,这个工具起到了作用. Vector Asset Android Studio 在1.4 支持了VectorAsset,所谓VectorAsset:它可以帮助你在Android 项目中添加Materia