解决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的时候已经设置过全屏,这里的非全屏并不是真正的非全屏,只是停顿。我们重新设置来加快激活而已。