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開發不熟悉,希望有其他更好的事件通知


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM