zoukankan      html  css  js  c++  java
  • 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开发不熟悉,希望有其他更好的事件通知

  • 相关阅读:
    vue项目搭建
    轮播 删除中间的还是居中
    随内容增加,背景不设高度自适应,背景图不拉伸和变形
    緢点连接
    左侧背景,右侧数据,根据数据左侧背景自适应
    问题
    手机访问网站,点击手机号码直接拨打电话
    长度超出之后文字变成省略号
    css中vw,vh单位对于UC的兼容性问题
    线性渐变的兼容性写法
  • 原文地址:https://www.cnblogs.com/wuyaSama/p/5908329.html
Copyright © 2011-2022 走看看