Qt for Android:自定义Activity

邵毅
2023-12-01

Demo 链接:https://github.com/gongjianbo/HelloQtAndroid.git

0.前言

安卓的 Activity 类似于 Qt StackView 中的单个页面(Activity文档)。因为 Qt 是 DirectUI,页面都是绘制到最顶层的窗口,所以 Qt for Android 默认只有一个 activity,想要实现安卓原生的那种 activity 切换就需要自定义 activity。同时,有一些逻辑也需要在安卓原生里才能实现。

1.创建一个 MainActivity.java 类文件

MainActivity.java 放到 AndroidManifest.xml 旁的 java 文件夹,如果是默认的影子构建那就在 build- 目录下。

在 Qt5 中,自定义的 Activity 继承自 org.qtproject.qt5.android.bindings.QtActivity 可以用来呈现我们的 Qt 界面。

// 根据包名在AndroidManifest.xml中指定Activity的name路径(=包名.类名)
package com.gongjianbo.demo;
import org.qtproject.qt5.android.bindings.QtActivity;
import android.view.WindowManager;
import android.os.Bundle;
import android.util.Log;
 
public class MainActivity extends QtActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        Log.e("MainActivity", "onCreate MainActivity start");
        super.onCreate(savedInstanceState);
        // 设置屏幕常量
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        Log.e("MainActivity", "onCreate MainActivity finish");
    }
}

2.在 AndroidManifest.xml 中修改原来的 activity 标签的 android:name 属性

属性改为我们自定义的 Activity 类的包名+类名。

android:name="com.gongjianbo.demo.MainActivity"

 类似资料: