Android应用程序中,为了美观或者特殊需要,有时需要全屏,这里介绍一些方法,
下面的方法是Activity刚开始创建,就设置为全屏,先看示例代码,再看看代码的作用。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
setContentView(R.layout.activity_main);
}
1. 保存屏幕常亮
调用下面的方法,是为了保持屏幕常亮
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
2. 全屏的参数设置
2.1 隐藏状态栏
SYSTEM_UI_FLAG_FULLSCREEN:状态栏消失,状态栏的layout还在;
SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:状态栏消失,状态栏的layout也不再占用屏幕空间;
2.2 隐藏导航键
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:导航键消失不见,但是导航键的位置依然占用原来的屏幕空间;
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:导航键消失不见,同时导航键的layout也不再占用屏幕空间;
3.3 隐藏程序的标题栏,下面2个参数,可以使标题栏消失
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
通过上面的设置,程序启动后,就可以看到程序全屏了。但是当从屏幕最上方下滑屏幕,或者从屏幕最下方上滑屏幕,状态栏和导航键还是会出现,不知道有没有办法在这种情况下也不让状态栏和导航键出来。
其他方法,收集如下,
方法一:
public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// 隐藏标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
// 隐藏状态栏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
}
}
方法二:
<!-- 同时隐藏状态栏和标题栏 -->
<activity
android:name="com.ysj.demo.MainActivity"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
方法三:
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
<!-- 隐藏状态栏 -->
<item name="android:windowFullscreen">true</item>
<!-- 隐藏标题栏 -->
<item name="android:windowNoTitle">true</item>
</style>
方法一中的两段代码要在setContentView()之前。
方法二只能同时隐藏状态栏和标题栏。
方法一和方法二都只应用于单个Activity, 方法三应用于整个程序。