Demo 链接:https://github.com/gongjianbo/HelloQtAndroid.git
安卓的 Activity 类似于 Qt StackView 中的单个页面(Activity文档)。因为 Qt 是 DirectUI,页面都是绘制到最顶层的窗口,所以 Qt for Android 默认只有一个 activity,想要实现安卓原生的那种 activity 切换就需要自定义 activity。同时,有一些逻辑也需要在安卓原生里才能实现。
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");
}
}
属性改为我们自定义的 Activity 类的包名+类名。
android:name="com.gongjianbo.demo.MainActivity"