android全屏显示方法

ゝ一纸荒年。 2023-10-18 19:54 103阅读 0赞

这里的全屏显示指的是消除Activity的标题栏和系统的的状态栏。总结下,可以有三种方式实现,不过也有些地方值得注意,下面分别对每种方式及其使用存在的问题进行阐述。

方法一:编程实现

在java程序中添加以下代码:

[java] view plain copy print ?

  1. this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
  2. this.requestWindowFeature(Window.FEATURE_NO_TITLE);

    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);

两个问题需要注意:

1、添加时机:在需要全屏显示的activity的界面显示函数setContentView( )调用前进行设置,否则报以下错误:

[java] view plain copy print ?

  1. E/AndroidRuntime( 479): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
  2. E/AndroidRuntime( 479): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
  3. E/AndroidRuntime( 479): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
  4. E/AndroidRuntime( 479): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
  5. E/AndroidRuntime( 479): at android.os.Handler.dispatchMessage(Handler.java:99)
  6. E/AndroidRuntime( 479): at android.os.Looper.loop(Looper.java:123)
  7. E/AndroidRuntime( 479): at android.app.ActivityThread.main(ActivityThread.java:3683)
  8. E/AndroidRuntime( 479): at java.lang.reflect.Method.invokeNative(Native Method)
  9. E/AndroidRuntime( 479): at java.lang.reflect.Method.invoke(Method.java:507)
  10. E/AndroidRuntime( 479): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
  11. E/AndroidRuntime( 479): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
  12. E/AndroidRuntime( 479): at dalvik.system.NativeStart.main(Native Method)
  13. E/AndroidRuntime( 479): Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
  14. E/AndroidRuntime( 479): at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:181)
  15. E/AndroidRuntime( 479): at android.app.Activity.requestWindowFeature(Activity.java:2729)
  16. E/AndroidRuntime( 479): at XXXActivity.onCreate(IHomeActivity.java:16)
  17. E/AndroidRuntime( 479): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
  18. E/AndroidRuntime( 479): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
  19. E/AndroidRuntime( 479): … 11 more

    E/AndroidRuntime( 479): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
    E/AndroidRuntime( 479): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
    E/AndroidRuntime( 479): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
    E/AndroidRuntime( 479): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
    E/AndroidRuntime( 479): at android.os.Handler.dispatchMessage(Handler.java:99)
    E/AndroidRuntime( 479): at android.os.Looper.loop(Looper.java:123)
    E/AndroidRuntime( 479): at android.app.ActivityThread.main(ActivityThread.java:3683)
    E/AndroidRuntime( 479): at java.lang.reflect.Method.invokeNative(Native Method)
    E/AndroidRuntime( 479): at java.lang.reflect.Method.invoke(Method.java:507)
    E/AndroidRuntime( 479): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    E/AndroidRuntime( 479): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    E/AndroidRuntime( 479): at dalvik.system.NativeStart.main(Native Method)
    E/AndroidRuntime( 479): Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
    E/AndroidRuntime( 479): at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:181)
    E/AndroidRuntime( 479): at android.app.Activity.requestWindowFeature(Activity.java:2729)
    E/AndroidRuntime( 479): at XXXActivity.onCreate(IHomeActivity.java:16)
    E/AndroidRuntime( 479): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    E/AndroidRuntime( 479): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
    E/AndroidRuntime( 479): … 11 more

2、存在问题:这种方法可以达到全屏显示效果,但activity的标题栏会有短暂的停留,看起来很不爽

方法二:通过XML文件进行配置

在AndroidManifest.xml中,为需要进行全屏显示的activity添加如下主题:

[html] view plain copy print ?

  1. android:theme=”@android:style/Theme.NoTitleBar.Fullscreen”

    android:theme=”@android:style/Theme.NoTitleBar.Fullscreen”

这种方法堪称完美,简单而且没有方法一中存在的那些问题,推荐使用!

方法三:组合拳,编码和xml配置同时使用

这种方法是在方法一的基础上改进而来。具体做法是:

1)、按照方法一添加代码到java中

2)、在AndroidManifest.xml中,为需要进行全屏显示的activity添加如下主题:

[html] view plain copy print ?

  1. android:theme=”@android:style/Theme.NoTitleBar”

    android:theme=”@android:style/Theme.NoTitleBar”

这种方法可以实现同方法二一样的i效果。本质上来说,就是通过在xml文件中添加相应的配置来消除方法一中的问题2来实现的。

发表评论

表情:
评论列表 (有 0 条评论,103人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Openlayers实战:显示

    Openlayers地图中,全屏显示算是一个比较重要的组件了,经常会在演示的场景用到或者在多数据要展现的时候用到。 在我们的实战课程里,详细讲一下其做法并配置其属性。 效果

    相关 android显示方法

    这里的全屏显示指的是消除Activity的标题栏和系统的的状态栏。总结下,可以有三种方式实现,不过也有些地方值得注意,下面分别对每种方式及其使用存在的问题进行阐述。 方法一: