android获取屏幕属性,获取手机屏幕DisplayMetrics属性多种方法

本文详细介绍了在Android中获取屏幕尺寸的三种方法:通过WindowManager、DisplayMetrics和Canvas,并指出这些方法在不同阶段的使用时机。同时,还提到了在Activity中获取尺寸的最佳实践是在onSizeChanged方法中。此外,讨论了视图宽度和高度与屏幕尺寸的区别,以及如何考虑任务栏和状态栏的高度。最后,提及了设置屏幕显示属性如无标题、全屏和横屏模式的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. Dispaly

Java代码

WindowManager windowManager = getWindowManager();

Display display = windowManager.getDefaultDisplay();

screenWidth = display.getWidth();

screenHeight = display.getHeight();

2.DisplayMetrics

Java代码

DisplayMetrics dm =newDisplayMetrics();

this.getWindowManager().getDefaultDisplay().getMetrics(dm);//this指当前activity

screenWidth =dm.widthPixels;

screenHeight =dm.heightPixels;

以上两种方法在屏幕未显示的时候,还是处于0的状态,即要在setContentView调用之后才有效。

3.canvas

在onDraw中由canvas来获得

Java代码

screenWidth =canvas.getWidth();

screenHeight =canvas.getHeight();

而视图的高宽则是大多数人所认为的canvas的高宽,其实他所指的是除了任务栏和状态栏的高宽,主要有如下方法:

1.

Java代码

viewWidth=this.getWidth();

viewHeight=this.getHeight();

2.重写view的onSizeChanged,该方法会在onCreate之后,onDraw之前调用

Java代码

protectedvoidonSizeChanged(intw,inth,intoldw,intoldh) {

viewHeight=h;

viewWidth=w;

super.onSizeChanged(w, h, oldw, oldh);

}

任务栏、状态栏的高宽的高宽我目前还不清楚,不过从网上查找可知:

引用

frameworks/core/res/values/themes.xml

25dip

frameworks/core/res/values/dimens.xml

25dip

在一个activity中如果要获取高宽,最好是放在onSizeChanged中比较保险。

以上是我对android获得高宽的一点总结,如果有错误的地方,欢迎留言探讨。

另外,还有对屏幕显示的一些设置:

//设置为无标题

Java代码

requestWindowFeature(Window.FEATURE_NO_TITLE);

//设置为全屏模式getWindow().setFlags

Java代码

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

//设置为横屏

Java代码

setRequesteOrientation(ActivityInfo.SCREEN_ORIENTATION_LADSCAPE);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值