在onWindowFocusChanged方法中获取手机屏幕的高宽

开发时,我们时常要获取手机屏幕的高宽数据。通常我们会写个获取方法如getScreen();然后在Oncreate()中调用getScreen()方法。我们可能获取到的结果是宽高为0。这是为什么呢?原因在于:

在Activity生命周期中,onCreate,onStart, onResume都不是真正屏幕可见(VISIBLE)时间点,真正的VISIBLE时间点是在当onWindowFocusChanged()函数被执行时,此时用户才真正地可以与应用进行交互,而这函数被调用之前,用户的操作都有一点限制。所以我们要正确获取到手机屏幕的宽高,是要在onWindowFocusChanged()方法中来执行。

@Override

public void onWindowFocusChanged(boolean hasFocus) {

int width=getResources().getDisplayMetrics().widthPixels;//屏幕宽度

int hight=getResources().getDisplayMetrics().heightPixels;//屏幕高度

super.onWindowFocusChanged(hasFocus);

}

时间: 2024-08-29 15:54:12

在onWindowFocusChanged方法中获取手机屏幕的高宽的相关文章

获取手机屏幕DisplayMetrics属性方法

首先,有一点需要声明,其实在android中,画布Canvas的高宽其实是屏幕的高宽. 如此一来,获得屏幕高宽的方法就很多了: 1. Java代码 WindowManager windowManager = getWindowManager(); Display display = windowManager.getDefaultDisplay(); screenWidth = display.getWidth(); screenHeight = display.getHeight(); 2.

动态获取手机屏幕宽高及动态设置控件宽高

1.获取手机屏幕宽高: DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int screenWidth = dm.widthPixels; int screenHeight = dm.heightPixels; 22.根据屏幕宽度为控件设置动态设置宽高: imageView.setImageResource(R.drawable.newscar); L

Spring中的AOP(五)——在Advice方法中获取目标方法的参数

摘要: 本文介绍使用Spring AOP编程中,在增强处理方法中获取目标方法的参数,定义切点表达式时使用args来快速获取目标方法的参数. 获取目标方法的信息 访问目标方法最简单的做法是定义增强处理方法时,将第一个参数定义为JoinPoint类型,当该增强处理方法被调用时,该JoinPoint参数就代表了织入增强处理的连接点.JoinPoint里包含了如下几个常用的方法: Object[] getArgs:返回目标方法的参数 Signature getSignature:返回目标方法的签名 Ob

如何在onCreate方法中获取视图的宽度和高度

你可以通过视图的getWidth()和getHeight()来获取视图的宽度和高度. 但是,可能会让你失望的是,如果你直接在onCreate方法内调用这两个函数,你会的到0. 为什么呢? 这是因为,当onCreate被调用的时候,视图的内容正在被LayoutInflater来填充xml布局. 这个过程会填充布局,但是暂时不会设置视图的大小. 那么视图到底什么时候获得自己的大小尺寸呢? 实际上是在Layout以后,而layout又是在onCreate调用以后. 那么,如果我们要在onCreate方

MVC 在action方法中获取当前action的控制器名和action名

如何在某个action方法中获取它所在的控制器和action名称呢. string controllerName = Request.RequestContext.RouteData.Values["controller"].ToString();//获取控制器名 string actionName = Request.RequestContext.RouteData.Values["action"].ToString();//获取action名

HackThirteen 在onCreate()方法中获取View的宽度和高度

1.概要: Android源代码中很多模块都使用了post()方法,深入理解框架曾运行机制对于避开类似于本例中的小陷阱是很重要的 2.问题提出: 如果开发一些依赖于UI控件的宽和高的功能,开发者可能会用到View的getHeight()和getWidth()方法.试图在Activity的 onCreate()方法中获取控件的宽和高.遗憾的是如果开发者在onCreate()方法中调用上述方法,会发现返回值都是0. 3.解释问题原因: 当onCreate()方法被调用时,会通过LayoutInfla

为何使用二次参数拦截器栈,,为何需要在beforeInput() [即prepareInput(),本项目中分装为beforeInput()方法] 方法中获取employee

因为,使用模型驱动,可以将不为空的employee压入栈顶,从而使得页面中以employee的属性名作为name的Struts标签元素能够获取到对应属性名的属性值,在点击修改后,可以实现回显. 具体的: 由于modelDriven拦截器先于input()方法执行,因此需要将获取employee的方法提前到modelDriven拦截器之前,即在prepareInput()方法获取employee,此时employee就不空了,再在后面执行到modelDriven拦截器时就将employee对象放入

js网页如何获取手机屏幕宽度

function a(){"屏幕宽高为:"+screen.width+"*"+screen.height:}其它:网页可见区域宽:document.body.clientWidth 网页可见区域高:document.body.clientHeight 网页可见区域宽:document.body.offsetWidth (包括边线的宽) 网页可见区域高:document.body.offsetHeight (包括边线的宽) 网页正文全文宽:document.body.

windowsphone中获取手机位置信息

首先在界面中加入一个textblock控件以显示信息 1 using System; 2 using System.Collections.Generic; 3 using System.IO; 4 using System.Linq; 5 using System.Runtime.InteropServices.WindowsRuntime; 6 using Windows.Foundation; 7 using Windows.Foundation.Collections; 8 using