Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用libgdx创建Android用户界面元素_Android_User Interface_Android Edittext_Libgdx - Fatal编程技术网

如何使用libgdx创建Android用户界面元素

如何使用libgdx创建Android用户界面元素,android,user-interface,android-edittext,libgdx,Android,User Interface,Android Edittext,Libgdx,我正在使用libgdx为Android开发一个游戏,我想知道如何制作Android用户界面元素,比如EditText和Button。我知道它只适用于Android,所以我将制作如下内容: if (Gdx.app.getType() == Application.ApplicationType.Android ) { ... } public class GameScreen implements Screen { ... } 我发现scene2d.ui可能会有所帮助,但我不使用scene2d

我正在使用libgdx为Android开发一个游戏,我想知道如何制作Android用户界面元素,比如EditText和Button。我知道它只适用于Android,所以我将制作如下内容:

if (Gdx.app.getType() == Application.ApplicationType.Android ) {
...
}
public class GameScreen implements Screen {
...
}
我发现scene2d.ui可能会有所帮助,但我不使用scene2d(演员、舞台等),也不太熟悉它。相反,我使用的是Screen的,类似这样的:

if (Gdx.app.getType() == Application.ApplicationType.Android ) {
...
}
public class GameScreen implements Screen {
...
}

我在游戏原型防御(用libgdx编写)中看到了这一点。

只需在android项目中使用android UI即可


他们知道如何为admob广告做广告,这样你就可以在游戏上投放广告。

所有特定于Android的代码都必须存在于Android后端。您不能在公共项目中使用特定于Android的代码

所有当前的libGDX UI元素都是基于OpenGL的自定义元素(因此它们在libGDX支持的所有平台上都是一致的)。没有包装Android UI原语的元素。对于按钮、标签或列表等简单的东西,我建议使用libgdxui组件以实现可移植性。对于更复杂的元素,如文本输入,或与平台交互(例如共享或其他),您可以使用标准的“定义接口”方法来调用特定于平台的代码

具体来说,假设您想弹出一个对话框,让用户输入他们的姓名。定义

public interface PlatformUI {
   public void showHighscoreNameEdit();
}
然后在Android项目中,使用Android原语在类中实现该接口。然后将此对象的实例传递到公共代码的构造函数中。现在,通用代码可以“调用”到Android层

Android初始化代码中的类似内容:

AndroidUI androidUI = new AndroidUI(...);
initialize(new Game(androidUI));
平台代码中有类似的内容:

if (timeToShowEditBox) {
  androidUI.showHighscoreNameEdit();
}
正如@android developer所指出的,本文的目的是调用特定于android的AdMob库,这在本例中非常类似