每次点击时随机将图像设置为 ImageButton

Setting Image to ImageButton randomly on every click

我正在尝试从图像制作按钮,我的想法是每次单击按钮都会更改图像,因此按钮的形状和外观也会发生变化。

E.g., every click gives a point, and every shape or "image" is selected based on an algorithm I made for this purpose

我有这三个变量,其值在下面的代码中随机生成:

rand = new Random(System.currentTimeMillis());
x = rand.nextInt(3);
y = rand.nextInt(8);
z = rand.nextInt(10);

将生成的数字分配给字符串以使用此代码创建图像的下一个 id

String myID = "R.id.myImage_" + x + y + z;

我使用这个代码:

int resource = getResources().getIdentifier(myID, "drawable", "com.asgames.package");

但是,我仍然收到找不到图像的错误消息。

您可以使用以下代码执行此操作:

int resource = getResources().getIdentifier(myID, "drawable", "com.your.package");

PS: 去掉名字中的“R.id.

  1. 将您的图像重命名为 image1、image2、...、image150。

  2. 生成一个介于 1 到 150(包括两者)之间的随机数。

  3. 使用下面的代码获取图片资源id。 (如果您将图像放在 mipmap 文件夹中,请使用 "mipmap" 而不是 "drawable")

    String myID = "image"+ generatedRandomNumber;
    int resource = getResources().getIdentifier(myID, "drawable", "com.your.package");
    
  4. 使用此资源 ID 为 ImageButton 设置图像。

要为 android 中的 View 生成随机 ID,您可以使用 generateViewId(),这是 View class 中的一个方法在 Android 库中,文档说:

Generate a value suitable for use in setId(int). This value will not collide with ID values generated at build time by aapt for R.id.

查看官方文档here

现在您可以执行以下操作:

    int imageCoordinates = x + y + z;
    int imageId = View.generateViewId() + imageCoordinates;