android全屏显示方法

来源:互联网 发布:剑三菊花插件数据下载 编辑:程序博客网 时间:2024/05/25 08:14
这里的全屏显示指的是消除Activity的标题栏和系统的的状态栏。总结下,可以有三种方式实现,不过也有些地方值得注意,下面分别对每种方式及其使用存在的问题进行阐述。

方法一:编程实现

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

[java] view plaincopyprint?
  1. this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);  
  2. this.requestWindowFeature(Window.FEATURE_NO_TITLE);  

两个问题需要注意:

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

[java] view plaincopyprint?
  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  
2、存在问题:这种方法可以达到全屏显示效果,但activity的标题栏会有短暂的停留,看起来很不爽

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

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

[html] view plaincopyprint?
  1. android:theme="@android:style/Theme.NoTitleBar.Fullscreen"  
这种方法堪称完美,简单而且没有方法一中存在的那些问题,推荐使用!

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

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

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

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

[html] view plaincopyprint?
  1. android:theme="@android:style/Theme.NoTitleBar"  
这种方法可以实现同方法二一样的i效果。本质上来说,就是通过在xml文件中添加相应的配置来消除方法一中的问题2来实现的。

原创粉丝点击