我是Android / Java开发的初学者。我刚刚开始学习编程,对我来说最简单的方法是修改开源项目以理解所涉及的原理。
无论如何,我想对泡泡射击游戏做一个非常简单的修改,5-10个不同的背景图像将随机循环:
我定义了一个背景drawables的字符串数组:
<?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);
请帮助我为这个想法创建一个简单的方法。
我也有几个问题:
注意: Bubble Shoot源代码:https://code.google.com/p/bubble-shoot/
背景图片文件名:background01.jpg,background02.jpg等
非常感谢,
保
答案 0 :(得分:0)
由于字符串数组是按数字索引的,因此您可以很容易地执行您所描述的内容并使用您喜欢的任何图像。
假设您要小心输入与drawables文件夹中完全相同的名称。
所以你的数组(不需要命名的项目)看起来像
<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和这个数组长度之间的随机数,然后你得到这样的drawable:
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);
我是从记忆中写的,所以它可能有拼写错误,但你得到了一般的想法。