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

  • 相关阅读:
    java多线程(待完善)
    eclipse console 查看全部的输出
    maven仓库地址
    拷贝Maven工程依赖的jar包出来
    ElasticSearch
    python2学习------基础语法5(常用容器以及相关操作)
    文本框焦点事件改变默认文字
    随机更换图片
    妙味——JS数组的方法
    妙味——封装getStyle()获取样式
  • 原文地址:https://www.cnblogs.com/winxiang/p/2736729.html
Copyright © 2011-2022 走看看