admin管理员组文章数量:1565819
Demo 链接:https://github/gongjianbo/HelloQtAndroid.git
1.前言
安卓的 Application 类相当于 Qt QApplication,维护应用程序全局状态(Application文档)。在 App 运行过程中有且仅有一个 Application 对象贯穿整个生命周期,所以也可以用来放一些全局变量和函数。
安卓的 Activity 类似于 Qt StackView 中的单个页面(Activity文档)。因为 Qt 是 DirectUI,页面都是绘制到最顶层的窗口,所以 Qt for Android 默认只有一个 activity,想要实现安卓原生的那种 activity 切换就需要自定义 activity。
2.自定义 Application
先创建一个 MyApplicatiion.java 类文件放到 AndroidManifest.xml 旁的 java 或者 src 文件夹,如果是默认的影子构建那就在 build- 目录下,也可以修改 build.grade 路径设置自定义目录。
在 Qt5 中,自定义的 Application 继承自 org.qtproject.qt5.android.bindings.QtApplication。
// 根据包名在AndroidManifest.xml中指定Application的name路径(=包名.类名)
package com.gongjianbo.demo;
import org.qtproject.qt5.android.bindings.QtApplication;
import android.app.Application;
import android.content.Context;
public class MyApplication extends QtApplication {
private static Context mContext;
@Override
public void onCreate() {
super.onCreate();
// getApplicationContext();
mContext = this;
}
public static Context getContext() {
return mContext;
}
}
然后在 AndroidManifest.xml 中修改原 application 标签的 android:name 属性,改为我们自定义的 Application 类的包名+类名。
android:name="com.gongjianbo.demo.MyApplication"
3.自定义 Activity
先创建一个 MainActivity.java 类文件放到 AndroidManifest.xml 旁的 java 或者 src 文件夹,如果是默认的影子构建那就在 build- 目录下,也可以修改 build.grade 路径设置自定义目录。
在 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 {
private String LogTag = "Main Activity";
@Override
public void onCreate(Bundle savedInstanceState) {
Log.e(LogTag , "onCreate MainActivity start");
super.onCreate(savedInstanceState);
// 设置屏幕常量
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Log.e(LogTag , "onCreate MainActivity finish");
}
}
然后在 AndroidManifest.xml 中修改原 activity 标签的 android:name 属性,改为我们自定义的 Activity 类的包名+类名。
android:name="com.gongjianbo.demo.MainActivity"
通过打印日志,可以看到 Activity 是在 Qt main 函数之前初始化完成的。
本文标签: 自定义androidQTapplicationActivity
版权声明:本文标题:Qt for Android:自定义安卓Application和Activity 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1726219646a1060950.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论