所有 Android 特定的代码都必须存在于 Android 后端。您不能在公共项目中使用特定于 Android 的代码。
当前所有的 libGDX UI 元素都是基于 OpenGL 的自定义元素(因此它们在 libGDX 支持的所有平台上都有些一致)。没有包装 Android UI 原语的元素。对于按钮、标签或列表等简单的东西,我建议使用 libGDX UI 组件以实现可移植性。对于更复杂的元素,如文本输入或与平台交互(例如,共享或其他),您可以使用标准的“定义接口”方法来调用特定于平台的代码。
具体来说,假设您要弹出一个对话框让用户输入他们的姓名。定义
public interface PlatformUI {
public void showHighscoreNameEdit();
}
然后在你的 Android 项目中使用 Android 原语在一个类中实现这个接口。然后将此对象的一个实例传递给您的通用代码的构造函数。现在通用代码可以“调出”到Android层。
在 Android 初始化代码中是这样的:
AndroidUI androidUI = new AndroidUI(...);
initialize(new Game(androidUI));
在平台代码中是这样的:
if (timeToShowEditBox) {
androidUI.showHighscoreNameEdit();
}
正如@android developer 指出的那样,AdMobInLibgdx wiki 页面涵盖了这一点,目的是调用 Android 特定的 AdMob 库,在这种情况下非常相似。