android dialog 隐藏状态栏_Qt On Android 隐藏状态栏的方法

注意点

隐藏状态栏时,第一个界面不能使用Qt设计师界面类(创建项目时,不勾选创建界面选项)。不然以下方法皆会无效。

方法1

修改AndroidManifest.xml中activity的主题。即在标签中添加 android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

以下为实例代码:

<activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density"
          android:name="an.qt.helloQtQuickApp.QtFullscreenActivity"
          android:label="-- %%INSERT_APP_NAME%% --"
          android:screenOrientation="unspecified"
          android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
          android:launchMode="singleTop">

如果无效,则需要重写QtActivity的onCreate函数。 大致步骤如下: 1. 在项目目录androidsrc目录下创建与包名相同的目录。例如:我们要创建的包为an.qt.helloQtQuickApp,那么路径为anqthelloQtQuickApp。并创建一个Java文件,用于定义我们的Activity。文件名可以随便取,我这里的文件名设为QtFullscreenActivity.java。 2. 修改AndroidManifest.xml文件,使用我们刚才新定义的Activity。 将标签中的package改成我们创建的包名。将标签中android:name改成an.qt.helloQtQuickApp.QtFullscreenActivity,即包名.新创建的Activity类名。

Java文件代码如下:
package an.qt.helloQtQuickApp;
import android.content.Context;
import android.content.Intent;
import android.app.PendingIntent;
import android.util.Log;
import android.os.Bundle;
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);
    }
}

详细操作过程可以参看安晓辉的blog:

https://blog.csdn.net/foruok/article/details/38265349​blog.csdn.net

方法2

大致思路如下:使用Qt5.7后,在QtAndroid类新增了一个静态函数:

void QtAndroid::runOnAndroidThread(const QtAndroid::Runnable &runnable)

通过它调用以下Java代码:

Activity activity = (Activity) mContext;
View decorView = activity.getWindow().getDecorView();
decorView.setSystemUiVisibility(
       View.SYSTEM_UI_FLAG_IMMERSIVE
        | 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);

这种方法的好处在于,可以在运行时控制是否隐藏状态栏,而且不用改AndroidManifest.xml文件,移植方便。

详细操作可以见作者Blog:

https://blog.csdn.net/jun4331247/article/details/80739662​blog.csdn.net

项目Github:

WingNan/QtAndroidFullScreen​github.com
v2-dbbc62831756725c094891da63a50940_ipico.jpg

移植步骤

  1. 复制文件jfullscreen.h、jfullscreen.cpp至你的项目目录。复制android/src目录及其内部文件至项目同名目录。
  2. 在项目上右键点击“添加现有文件",将以上几个文件添加到项目中。
  3. 编辑项目文件(*.pro),添加androidextras模块(在Qt+=core gui后面加上androidextras)
  4. 在app的第一个widget中#include "jfullscreen.h",并在构造函数中加入:
JFullScreen *pManager = new JFullScreen;
pManager->fullScreenStickyImmersive();

注意:创建项目时不能勾选“创建界面”选项,并且第一个widget不能使用设计师界面类来创建!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值