【问题标题】:how to randomized the positions of images in imageViews如何随机化 imageViews 中图像的位置
【发布时间】:2014-01-06 16:41:11
【问题描述】:
public class MainActivity extends Activity {

private int [] layouts = {
        R.id.imageView1,
        R.id.imageView2,
        R.id.imageView3,
        R.id.imageView4,
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button button = (Button) findViewById(R.id.button1);
    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            int i = layouts.length;
            Random r = new Random();



            while (--i > 0) {

                int j = r.nextInt(i + 1);

                //swap values
                int temp = layouts[j];
                layouts[j] = layouts[i];
                layouts[i] = temp;


            }

            ImageView iv = (ImageView) findViewById(layouts[i]);
            iv.setImageResource(layouts[i]);

            }


    });


}




@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

我有这 4 个图像视图。我想要的只是当我按下按钮时,它们的位置会随机改变.ex。 1,2,3,4 变成 2,3,1,4 或 4,3,2,1 类似的东西。当我尝试运行我的代码时,图像只是 1 个 1 消失。当我运行它时,4 个图像变为 3,当我按下按钮时,它变为 2,依此类推,直到它们全部消失。有人能帮我吗?

【问题讨论】:

    标签: android random imageview


    【解决方案1】:

    你需要两个数组。

    一个包含 ImageView Ids:

    private int [] layouts = {
            R.id.imageView1,
            R.id.imageView2,
            R.id.imageView3,
            R.id.imageView4,
    };  
    

    另一个包含图像的drawable:

    private int [] drawables = {
            R.drawable.your_image1,
            R.drawable.your_image2,
            R.drawable.your_image3,
            R.drawable.your_image4,
    };
    

    像你一样交换布局数组的值(假设你的算法有效)。

    然后将drawable的每个数组项从layouts数组中分配给每个ImageView:

    ImageView iv;
    for(i = 0; i < layouts.length; i++){
        iv = (ImageView) findViewById(layouts[i]);
        iv.setImageResource(drawables[i]);
    }
    

    【讨论】:

    • 很高兴为您提供帮助,欢迎来到 Stack Overflow。如果此答案或任何其他答案解决了您的问题,请将其标记为已接受
    猜你喜欢
    • 2018-10-10
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多