Activity的全屏显示

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

方法一:编程实现

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

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

两个问题需要注意:

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

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添加如下主题:

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

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

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

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

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

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

你可能感兴趣的:(Android)