一、我们在做游戏开发时,经常会使用到全屏(横屏、沉浸式标题栏和虚拟按键,屏幕常亮)等。我把这些功能都集中在BaseActivity做了实现,在某一个Activity中需要使用时,只用继承此其类即可。(此部分代码参考了部分网上的示例)
package com.hawkonline.gamedome;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
/**
* 此基类主要用与统一游戏界面横屏,不显示标题栏及状态栏,以及游戏运行时屏幕常亮
*/
public class BaseActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//不显示标题和状态栏
hideNavigationBar();
//让屏幕长亮
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
//动态设置横屏和坚屏
//setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//横屏
//setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖屏
//先推断是否已经为横屏了,假设不是再旋转
if(this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}
// 隐藏虚拟按键
public void hideNavigationBar() {
int uiFlags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION//布局隐藏导航
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN//布局全屏
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION //隐藏导航
| View.SYSTEM_UI_FLAG_FULLSCREEN //全屏
| View.SYSTEM_UI_FLAG_IMMERSIVE//沉浸式系统
;
//兼容性判断
if (android.os.Build.VERSION.SDK_INT >= 19) {
uiFlags |= 0x00001000;
} else {
uiFlags |= View.SYSTEM_UI_FLAG_LOW_PROFILE;
}
getWindow().getDecorView().setSystemUiVisibility(uiFlags);
}
//如果窗体发生改变 自动隐藏
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
hideNavigationBar();
}
}
}
二、XML中
1.application 禁用分屏和设置主题为无标题全屏
<application
......
android:resizeableActivity="false"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
<activity
......
</activity>
</application>
2.Activity 用来设置 activity配置改变(屏幕方向,全屏)的集合
<activity
......
android:configChanges="orientation|keyboardHidden|screenSize"
android:resizeableActivity="false"
android:screenOrientation="landscape">
......
</activity>
企业网站/微信小程序/app定制开发请添加微信:Hawkonline
最新小程序案例