java - Android 中循环随机图像

标签 java android xml image random

我是 Android/Java 开发的初学者。我刚刚开始学习编程,对我来说最简单的方法就是修改开源项目来理解其中涉及的原理。

总之,我想对Bubble Shoot游戏做一个非常简单的修改,随机循环5-10张不同的背景图片:

  • 每个新关卡开始时(但在关卡刚刚重新启动时保持不变)
  • 或更简单:每次重新启动或启动关卡时,背景都会发生变化

我定义了一个背景可绘制对象的字符串数组:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="random_background"></string-array>
        <item name="background_01">@drawable/background01</item>
        <item name="background_02">@drawable/background02</item>
        <item name="background_03">@drawable/background03</item>
        <item name="background_04">@drawable/background04</item>
        <item name="background_05">@drawable/background05</item>
        <item name="background_06">@drawable/background06</item>
        <item name="background_07">@drawable/background07</item>
        <item name="background_08">@drawable/background08</item>
        <item name="background_09">@drawable/background09</item>
        <item name="background_10">@drawable/background10</item>

</resources>

原始代码定义SRC文件夹中GameView.java的背景:

  mBackgroundOrig =
    BitmapFactory.decodeResource(res, R.drawable.background, options);

请帮助我为这个想法创建一个简单的方法。

我还有几个问题:

  • xml 文件的 res/values 格式必须正确吗?我可以使用任何文件名吗?例如:random.xml
  • 我在 xml 文件中遇到此错误:错误:项目需要“类型”属性我需要为每个项目设置类型和格式吗?如果是,请问是什么类型和格式?
  • 我们可以避免超出视频内存限制吗?我的意思是仅加载当前背景,并在每次使用后刷新,然后显示新的随机图像。

注释:泡泡射击源代码:https://code.google.com/p/bubble-shoot/

背景图片文件名:background01.jpg、background02.jpg等

非常感谢,

保罗

最佳答案

由于字符串数组是按数字索引的,因此很容易执行您所描述的操作并使用您喜欢的任何图像。

假设您仔细地输入了它们的名称,与它们在可绘制文件夹中的名称完全相同。

所以你的数组(不需要命名项目)看起来像

<string-array name="myImages">
    <item>foo</item>
    <item>bar</item>
    <item>image7</item>
    <item>king_kong</item>
</string-array>

等等。 Drawables 需要包含图像 foo.jpg、bar.jpg 等。

现在,在您的代码中,您提取一个介于 0 和该数组长度之间的随机数,然后您将得到如下所示的可绘制对象:

int randomNum = Math.floor(Math.random() * getResources().getStringArray(R.array.myImages).length);
Field field = R.drawable.class.getField(getResources().getStringArray(R.array.myImages)[randomNum]);
int imgId = field.getInt(null);

myImg.setImgResource(imgId);

我是凭内存写的,所以可能有错别字,但你大概明白了。

关于java - Android 中循环随机图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15631904/

相关文章:

java - 我们从哪里得到 "import"的东西?

android - 程序类型已经存在 : com. google.thirdparty.publicsuffix

android - 使用 facebook API 通知将 android 应用程序通知发送到 facebook

java - 如何将文件夹及其所有子文件夹和文件复制到另一个文件夹中

java - 解析字符串输出到文件

java - 将根元素添加到java中的xml文档

android - NavigationDrawer,带有图像的适配器

java - 修复此appium错误: "A session is either terminated or not started"

python - 如何使用 python 修改 XML 中的元素文本

java - 从 Jaxb 字段中删除命名空间