cocos打包安卓原生工程时、由于各种各样的特殊原因,需要把cocos嵌入到安卓原生工程中。但是会出现各种兼容性问题。
可以利用android的activity来妥善处理(兼容android和androidx工程!!!)
ActivityViewHelper.java 文件 封装好的工具类
import android.app.LocalActivityManager;
import android.content.Intent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import androidx.appcompat.app.AppCompatActivity;
public class ActivityViewHelper {
/**
* 启动指定Activity并将其DecorView添加到给定的ViewGroup中
* @param activity 当前的AppCompatActivity
* @param container 用来显示目标Activity视图的容器
* @param targetActivity 目标Activity类
*/
public static void addActivityToView(AppCompatActivity activity, ViewGroup container, Class<?> targetActivity) {
LocalActivityManager mgr = new LocalActivityManager(activity, false);
mgr.dispatchCreate(activity.getIntent());
Intent intent = new Intent(activity, targetActivity);
View decorView = mgr.startActivity("gm", intent).getDecorView();
container.removeAllViews();
container.addView(decorView);
}
}
使用:
import android.os.Bundle;
import android.widget.FrameLayout;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取容器视图(假设这是一个FrameLayout)
FrameLayout container = findViewById(R.id.container);
// 使用封装的Helper方法将目标Activity的DecorView添加到容器中
ActivityViewHelper.addActivityToView(this, container, AppActivity.class);
}
}
AppActivity.class是cocos工程的类名称
后记:由于题主的目的是支持androidx,所以也可以对cocos引擎部分做一些修改、使其兼容androidx。
标签:cocos,嵌入,container,androidx,安卓,activity,import,android From: https://www.cnblogs.com/yanyulanshan/p/18530953