Android游戏开发:全屏实现 (横屏、沉浸式标题栏和虚拟按键,屏幕常亮)

18 篇文章 4 订阅
9 篇文章 0 订阅

一、我们在做游戏开发时,经常会使用到全屏(横屏、沉浸式标题栏和虚拟按键,屏幕常亮)等。我把这些功能都集中在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

 最新小程序案例

          

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值