• QT for android 比较完美解决 全屏问题


    项目用到QT qml,需要在android下面全屏显示,折腾了一晚上,搞定,分享下,希望能帮助他人。

    参考
    Qt on Android:让 Qt Widgets 和 Qt Quick 应用全屏显示

    该解决方案一定环境下不完美,比如台电P70上就只是隐藏了通知区,没有隐藏虚拟按键区
    想来广大奔赴安卓开发第一线的一定有遇到,就换了个思路寻找结果,附上最终成果

    package com.game.XXXXX;
    import android.content.Context;
    import android.content.Intent;
    import android.app.PendingIntent;
    import android.util.Log;
    import android.os.Bundle;
    import android.view.View;
    import android.view.MotionEvent;
    import android.view.WindowManager;
    
    public class QtFullscreenActivity extends org.qtproject.qt5.android.bindings.QtActivity
    {
        private final static String TAG = "QtFullscreen";
        @Override
        public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        }
    
        @Override
        public void onWindowFocusChanged(boolean hasFocus) {
            getWindow().getDecorView().setSystemUiVisibility(
                    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 // hide nav bar
                    | View.SYSTEM_UI_FLAG_FULLSCREEN      // hide status bar
                    | View.SYSTEM_UI_FLAG_IMMERSIVE);
        }
    
        @Override
        public boolean dispatchTouchEvent(MotionEvent ev) {
            getWindow().getDecorView().setSystemUiVisibility(
                    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 // hide nav bar
                    | View.SYSTEM_UI_FLAG_FULLSCREEN      // hide status bar
                    | View.SYSTEM_UI_FLAG_IMMERSIVE);
            return super.dispatchTouchEvent(ev);
        }
    }
    
    

    注意

    • package com.game.XXXXX; 这里要保证包名完全一致,路径也无误,否则会出错
    • java文件编码可以采用utf-8 gbk,但是注意如果utf-8格式不能有BOM

    基本原理就是整合了博客里面的方案,另外处理了“获取焦点”和“触控事件”时,隐藏掉虚拟按键和其他,达到比较完美全屏

    遗憾:
    “触控事件”是为了处理,用户点击textedit调用虚拟键盘后,虚拟按键不隐藏情况,再次点击屏幕即可隐藏,本人对android开发不熟悉,希望有其他更好的事件通知

  • 相关阅读:
    使用SO_REVTIMEO套接字选项为recvfrom设置超时
    使用select为描述符设置超时
    套接字超时设置方法
    使用SIGALARM为recvfrom设置超时
    使用SIGALARM为connect设置超时
    20200410 阿里巴巴Java开发手册
    20200409 Vue 视频学习【归档】
    20200319 Spring MVC 官方文档【归档】
    20200319 Spring Web MVC 2-5
    20200319 Spring Web MVC 1
  • 原文地址:https://www.cnblogs.com/wuyaSama/p/5908329.html
Copyright © 2020-2023  润新知