gpt4 book ai didi

java - 在 Android 游戏中使用 Surface View 时,我应该如何接收文本输入

转载 作者:太空宇宙 更新时间:2023-11-04 15:08:53 26 4
gpt4 key购买 nike

我创建了一个基于 this tutorial 的 Android 游戏。我有很多开发经验,但这是我进入 Java 和移动平台的第一步。

游戏被创建为单个 Activity ,所有内容都绘制在 SurfaceView 上,并指定“屏幕”来分解所有内容。我没有 xml 布局。主类的 onCreate 是查看其设置方式的最佳位置。 AndroidFastRenderView 扩展了 SurfaceView。

    public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
WindowManager.LayoutParams.FLAG_FULLSCREEN
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

boolean isPortrait = getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT;
int frameBufferWidth = isPortrait ? 480 : 800;
int frameBufferHeight = isPortrait ? 800 : 480;
Bitmap frameBuffer = Bitmap.createBitmap(frameBufferWidth,
frameBufferHeight, Config.RGB_565);

float scaleX = (float) frameBufferWidth
/ getWindowManager().getDefaultDisplay().getWidth();
float scaleY = (float) frameBufferHeight
/ getWindowManager().getDefaultDisplay().getHeight();

renderView = new AndroidFastRenderView(this, frameBuffer);
graphics = new AndroidGraphics(getAssets(), frameBuffer);
fileIO = new AndroidFileIO(this);
audio = new AndroidAudio(this);
input = new AndroidInput(this, renderView, scaleX, scaleY);
screen = getInitScreen();
setContentView(renderView);
}

我正在寻找一种方法,使用户能够输入高分表的名称 - 我认为这很简单。我真的在努力寻找接收键盘输入的最佳方式。我这里最好的选择是什么?我假设有某种方法可以创建自定义编辑,我可以自己在表面 View 上绘制并以这种方式接收键盘输入。然而,我猜测在表面 View 的顶部显示 EditText 会更容易 - 但我一生都无法弄清楚如何做到这一点。我尝试了通过 Google 和 SO 找到的多种方法,但似乎都无法发挥作用。

建议和示例代码将不胜感激。

非常感谢

最佳答案

最适合您的方法是使用内部存储。您可以将文件直接保存在设备的内部存储器上。默认情况下,保存到内部存储的文件是您的应用程序私有(private)的,其他应用程序无法访问它们(用户也不能)。当用户卸载您的应用程序时,这些文件将被删除。

创建私有(private)文件并将其写入内部存储:

使用文件名和操作模式调用openFileOutput()。这将返回一个 FileOutputStream。使用write()写入文件。使用 close() 关闭流。

`String FILENAME = "hello_file";
String string = "hello world!";
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();

MODE_PRIVATE 将创建该文件(或替换同名文件)并使其对您的应用程序私有(private)。其他可用模式有:MODE_APPEND、MODE_WORLD_READABLE 和 MODE_WORLD_WRITEABLE。

从内部存储读取文件:

调用 openFileInput() 并向其传递要读取的文件的名称。这将返回一个 FileInputStream。使用 read() 从文件中读取字节。然后使用 close() 关闭流。

保存缓存文件

如果您想缓存一些数据,而不是持久存储它,您应该使用 getCacheDir() 打开一个代表应用程序应在其中保存临时缓存文件的内部目录的文件。

当设备内部存储空间不足时,Android 可能会删除这些缓存文件以恢复空间。但是,您不应该依赖系统来为您清理这些文件。您应该始终自行维护缓存文件并保持在合理的空间消耗限制内,例如 1MB。当用户卸载您的应用程序时,这些文件将被删除。

或者使用 SQLite 数据库 more detail here

关于java - 在 Android 游戏中使用 Surface View 时,我应该如何接收文本输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21597996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com