android 中的图像按钮按下并按顺序获取数组中的随机图像

Image button in android pressed and get a random image in an array sequentially

public abstract class MainActivity extends Activity  implements View.OnClickListener{

    private ImageButton bt1;
    public int index =0;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final Drawable[][] images = new Drawable[4][16];
        bt1 = (ImageButton) findViewById(R.id.im_bt1);
        bt1.setImageDrawable(images[index][(int)(Math.random()*16)]);
        bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                index++;
                ((ImageButton)v).setImageDrawable(images[index][(int)(Math.random()*16)]);

            }
        });

    }


    Red RR1 = new Red(R.drawable.rr1);
    Red RY1 = new Red(R.drawable.ry1);
    Red RG1 = new Red(R.drawable.rg1);
    Red RB1 = new Red(R.drawable.rb1);
    Green GB1 = new Green(R.drawable.greenblue);
    Green GG1 = new Green(R.drawable.greengreen);
    Green GR1 = new Green(R.drawable.greenred);
    Green GY1 = new Green(R.drawable.greenyellow);
    Yellow YY1 = new Yellow(R.drawable.yellowyellow);
    Yellow YB1 = new Yellow(R.drawable.yellowblue);
    Yellow YG1 = new Yellow(R.drawable.yellowgreen);
    Yellow YR1 = new Yellow(R.drawable.yellowred);
    Blue BR1= new Blue(R.drawable.br1);
    Blue BB1=new Blue(R.drawable.bb1);
    Blue BY1=new Blue(R.drawable.by1);
    Blue BG1= new Blue(R.drawable.bg1);

    Red[] Redarray = new Red[]{
            RR1,RY1,RG1,RB1
    };
    Green[] Greenarray = new  Green[]{
            GR1,GB1,GY1,GG1
    };

    Blue[] Bluearray = new  Blue[]{
      BB1,BY1,BG1,BR1
    };

    Yellow[] Yellowarray = new Yellow[]{
            YB1,YG1,YR1,YY1
    };


}

我的布局中有一个 ImageButton,我想按下按钮并从数组中获取另一个随机 ImageButton,然后在我按下那个按钮时获取另一个,但我希望它按顺序显示在我制作的数组上。

图像数组 1 图像数组 2 图像数组 3 图片数组 4

图像按钮从 array1 到另一个随机图像按钮从 array2 到另一个图像按钮从 array 3...

编辑:所以我制作了所有数组的 class 但它不起作用..我正在努力制作数组数组..你们可以检查我的代码吗?谢谢..

首先:我不会每次都换另一个ImageButton,而是只改变显示的图像。

其次:您需要一组 ImageButtons(或可绘制对象)数组。 然后你需要一个索引用于你的外部数组,并且需要一个随机值用于你的内部数组。

Drawable[][] images = new Drawable[4][10]; //your 4 outer arrays with 10 drawables to choose randomly from // needs to be a member variable
fillArray();//add your drawables to the arrays here
int index = 0;//needs to be a member variable too
ImageButton button = new ImageButton(this);
button.setImageDrawable(images[index][(int)(Math.random()*10)]);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    index++;
        ((ImageButton)v).setImageDrawable(images[index][(int)(Math.random()*10)]);
    }
});

问题似乎是您从未重置索引变量。你可以这样解决

...
final Random random = new Random();
...
@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    bt1 = (ImageButton) findViewById(R.id.im_bt1);
    bt1.setImageDrawable(randomFromArray(images[index]));

    bt1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (++index == 4) {
                // reset index if it is too high after increment
                index = 0;
            }
            ((ImageButton) v).setImageDrawable(randomFromArray(images[index]));
}

public <T> T randomFromArray(final T[] array) {
    return array[random.nextInt(array.length)];
}