在Android的实际开发中,会经常用到获取屏幕的尺寸的问题,以便设置一些布局在屏幕上的固定位置,从而适配各个屏幕的设备。

今天我就来讲一下怎么得到当前设备的屏幕像素吧:

一、在Activity中:

Display display = getWindowManager().getDefaultDisplay();//得到当前屏幕的显示器对象
Point size = new Point();//创建一个Point点对象用来接收屏幕尺寸信息
display.getSize(size);//Point点对象接收当前设备屏幕尺寸信息
int width = size.x;//从Point点对象中获取屏幕的宽度(单位像素)
int height = size.y;//从Point点对象中获取屏幕的高度(单位像素)
Log.v("zxy", "width="+width+",height="+height);//width=480,height=854可知手机的像素是480x854的

二、不在Activity中:

通过WINDOW_SERVICE对象获得默认的Display对象

WindowManager wm = (WindowManager) Context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();//然后获得屏幕像素就和第一个方法的一样了

三、如果没有getSize()方法,就通过getWidth()和getHeight()来获得,因为getSize()是新API引入的:

Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();  // 获得宽度像素
int height = display.getHeight();  // 获得屏幕高度像素

上面这些代码,就是获得屏幕的尺寸信息的,然后可以通过所获取的宽度或高度去乘以一个百分比来设置一个控件的宽高,从而达到适配的作用。

当然还有一种方式获得屏幕的像素的,就是通过DisplayMetrics对象来获得,这个的意思就是获得一个界面度量对象,用来获得当前屏幕的高和宽,实现方式如下:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;//获得屏幕高度
int width = metrics.widthPixels;//获得屏幕宽度

好了,获取屏幕的像素大小就说到这了,顺便补充一个常用的开发技术:

获取状态栏和标题栏的高度

废话不多说,直接贴代码吧:

Rect frame = new Rect();//创建一个空的矩形对象
getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);//获得顶层窗口的装饰视图,即状态栏,然后把状态栏显示的框架填充给刚刚我们创建的矩形对象,再通过矩形对象来获取状态栏高度
int statusBarHeight = frame.top;// 获取状态栏高度:frame.top
Log.v("zxy1", statusBarHeight+"");//打印出来的值为:38,即状态栏高度为38px
View v = getWindow().findViewById(Window.ID_ANDROID_CONTENT);// /获得根视图,
int allHeight = v.getTop();// 状态栏和标题栏的总高度

这样我们就获取了状态栏和状态栏加标题栏的总高度了,那么,显而易见,标题栏的高度就是用总高度减去状态栏的高度即可!!!【注】android屏幕都是以像素为单位的,进行相关计算或者设置宽高时注意转化单位,这里给出一个dp转px的方法:

public int Dp2Px(Context context, float dp) {
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (dp * scale + 0.5f);
	}

直接拿来用就行啦~~~

转载请注明出处---------

Android之获取屏幕的尺寸像素及获取状态栏标题栏高度的更多相关文章

  1. IOS开发之——获取屏幕的尺寸及各模拟器代表的型号

    获取屏幕尺寸 [[[UIScreen mainScreen] currentMode].size.width]; [[[UIScreen mainScreen] currentMode].size.h ...

  2. wift - 使用UIScreen类获取屏幕大小尺寸

    UISreen类代表了屏幕,开发中一般用来获取屏幕相关的属性,例如获取屏幕的大小. 1 2 3 4 5 6 7 //获取屏幕大小 var screenBounds:CGRect = UIScreen. ...

  3. 如何计算android设备的屏幕物理尺寸

    https://segmentfault.com/q/1010000002794179 通过android提供的接口,我们可以获取到如下的信息:int densityDpi = mContext.ge ...

  4. Android获取屏幕实际高度跟显示高度,判断Android设备是否拥有虚拟功能键

    //获取屏幕尺寸,不包括虚拟功能高度 getWindowManager().getDefaultDisplay().getHeight(); 获取屏幕原始尺寸高度,包括虚拟功能键高度, private ...

  5. javascript中获取屏幕尺寸

    Javascript获取获取屏幕.浏览器窗口 ,浏览器,网页高度.宽度的大小 屏幕的有效宽:window.screen.availHeight屏幕的有效高:window.screen.availWid ...

  6. 获取屏幕宽高度与可视区域宽高度(availWidth、clientWidth、width、innerWidth)

    经常会遇到需要获取屏幕宽度.高度,可视区域宽度.高度等问题,也就常跟这几个打交道,一不小心,还真爱弄混淆了. 先来列举下这几个吧: screen.availHeight.screen.availWid ...

  7. dp 密度 分辨率 屏幕 状态栏 标题栏 适配

    一篇总结的非常完善的博文:http://www.jianshu.com/p/ec5a1a30694b 屏幕像素参数相关信息表格 屏幕级别 像素密度 每英寸像素数   通常分辨率 分辨率别称    默认 ...

  8. Android计量单位px,in,mm,pt,dp,dip,sp和获取屏幕尺寸与密度

    ###########################################Android计量单位########################################### px ...

  9. Android 获取屏幕尺寸与密度

      android中获取屏幕的长于宽,参考了网上有很多代码,但结果与实际不符,如我的手机是i9000,屏幕大小是480*800px,得到的结果却为320*533 结果很不靠谱,于是自己写了几行代码,亲 ...

随机推荐

  1. ●UVA 11021 tunnello

    题链: https://vjudge.net/problem/UVA-11021题解: 概率DP. 定义dp[i]表示初始1只麻球的情况下,第i天都死完的概率. (因为每只麻球互相独立,那么最后答案为 ...

  2. 51Nod 1555 布丁怪

    题目描述: 布丁怪这一款游戏是在一个n×n 的矩形网格中进行的,里面有n个网格有布丁怪,其它的一些格子有一些其它的游戏对象.游戏的过程中是要在网格中移动这些怪物.如果两个怪物碰到了一起,那么他们就会变 ...

  3. 一起来Fit TDMA over WiFi(3)

    4 TDMA调度者 TDMA调度者为Fit-TDMA的决策功能体,属于新开发功能模块,分调度员和被调度者2种角色,其中前者运行在AP等汇聚设备上,后者运行在CPE等接入类设备上:后者必须与前者配合才能 ...

  4. python3 字符串str 教程

    字符串可以用单引号或双引号来创建. Python 不支持单字符类型,单字符也在Python也是作为一个字符串使用. 例: var1 = 'Hello World!' var2 = "Pyth ...

  5. Java Servlet 笔记2

    1. Servlet的生命周期 Servlet 通过调用 init () 方法进行初始化. Servlet 调用 service() 方法来处理客户端的请求. Servlet 通过调用 destroy ...

  6. Linux下解决无法远程连接数据库问题

    起因 今天在ubuntu16.04环境下通过mysql workbench访问远程数据库时,发现无法连接问题,解决思路及方法记录如下,不足之处,请多指教. 问题 通过workbench输入密码访问时报 ...

  7. web项目部署到阿里云服务器步骤

    http://www.cnblogs.com/qq3111901846/p/6178855.html http://blog.csdn.net/liona_koukou/article/details ...

  8. 修改原生单选框样式(vue单选组件)

    一.效果如图 二.实现 修改单选样式 //html <div class="radio-wrap"> <input type="radio" ...

  9. 阿里云部署mongdb(CentOS)

    配置包管理系统 (yum). Xshell登录Linux查看操作系统版本信息 lsb release -a 可以在官网选择对应的版本 :官网的安装指导文档http://docs.mongodb.org ...

  10. linux加入Windows域-------本人生产环境上线所用

    为什么说要linux加域呢!    因为之前在公司是做vmware的,然后呢vmware的horizon桌面云虚拟化都是通过域来管理的,开始使用的都是Windows桌面,后来开发的人员说要使用linu ...