解决android界面无法保持全屏状态的问题

往往我们在oncreate里面或是在xml里面设置一个界面为全屏。打开这个界面时是全屏的,但是比如我们在不退出的情况下按“锁屏键”或“home键”,然后再解锁或再次打开,那么这个界面就不再是全屏的了,要过大概几秒时间才会恢复。

下面我们就解决这个问题。

如图activity的生命周期:

当界面在按“home键”之后,会进入到onstop,并从界面中消失,显示手机桌面,自然就会有状态栏,当我们将他唤醒之后,直接走的是restart方法,并不会走oncreate,也就不会再次设置全屏。

当界面在按“电源键”之后,会进入到onpause状态,再次打开时,部分手机会停顿几秒甚至几十秒才会恢复全屏。onpause恢复时走的是onresume方法。所以我们在onresume方法中将页面在此设置为全屏就能解决了。

下面是检测是否为全屏的代码,位于OnResume():

 1 int v = this.getWindow().getAttributes().flags;
 2         // 全屏 66816 - 非全屏 65792,你们可以将if和else减为一个,这里只做提示使用
 3         if(v != 66816){//非全屏
 4             this.getWindow().setFlags(
 5                     WindowManager.LayoutParams.FLAG_FULLSCREEN,
 6                     WindowManager.LayoutParams.FLAG_FULLSCREEN);
 7             Toast.makeText(StartActivity.this, "设置全屏", Toast.LENGTH_LONG).show();
 8         }else{
 9             this.getWindow().setFlags(
10                 WindowManager.LayoutParams.FLAG_FULLSCREEN,
11                 WindowManager.LayoutParams.FLAG_FULLSCREEN);
12             Toast.makeText(StartActivity.this, "强制设置全屏", Toast.LENGTH_LONG).show();
13         }

你们可以看到我在if和else里面都重新设置了全屏,这是因为我们在oncreate的时候已经设置过全屏,这里的非全屏并不是真正的非全屏,只是停顿。我们重新设置来加快激活而已。

posted @ 2012-10-24 10:51  池塘里的大象  阅读(3673)  评论(0编辑  收藏  举报