如何使用随机化,因此当您按下按钮时,它将带您进入随机屏幕

时间:2018-09-20 21:42:05

标签: java android-studio random

我在计算机科学实验室里一直在寻找有关此问题的答案。我们正在为此应用程序使用Android Studio。

我想做的是单击按钮时使用随机化来使一组屏幕随机化。我的二人组正在开发骰子滚动应用程序,我们的想法是为骰子的每个侧面制作六个不同的屏幕。基本上,当我们单击按钮“掷骰子”时,它会思考一秒钟,然后将您带到随机页面,其中包含您获得的骰子上的数字图片。

这太不可思议了,我已经连续搜索了至少3个小时,但没有找到解决该问题的方法。如果有人需要有关该问题的更多信息(因为我不知道如何恰当地表达它),请问我。

4 个答案:

答案 0 :(得分:2)

只需使用Random.nextInt()即可获得最多6个随机数,并使用该数为每个骰子面选择6个图像中的一个。您不需要创建6个不同的屏幕,只需要6个不同的图像,其中的数字表示要使用的图像。例如:

// A list of drawables you've defined in /res/drawable folder for each die side
final int[] images = new int[6] {
    R.drawable.die_side_1,
    R.drawable.die_side_2,
    R.drawable.die_side_3,
    R.drawable.die_side_4,
    R.drawable.die_side_5,
    R.drawable.die_side_6
};

int random = Random.nextInt(6);       // Get random value, 0-5
int dieSideDrawable = images[random]; // Pick image to show based on random value
mDieImageView.setImageResource(dieSideDrawable); // Show image on an image view

希望有帮助!

答案 1 :(得分:1)

准确执行所需操作的最简单方法是将“活动”放入数组中,然后使用Random类的“ nextInt”方法从数组中选择适当的活动进行选择。 / p>

话虽这么说,您很可能希望创建一个包含两个图像的活动,而不是选择要显示的活动或片段,而是选择要加载到活动中的图像。

答案 2 :(得分:1)

我建议使用片段来实现这一目标。

创建片段列表

ArrayList<Fragment> fragmentList = new ArrayList<>();

现在使用java Random类生成随机数。

Random rand = new Random();

int  n = rand.nextInt(fragmentList.size());

然后只显示该片段。

getSupportFragmentManager()
                .beginTransaction()
                .replace(containerViewId, fragmentList.get(n))
                .addToBackStack(null)
                .commit();

答案 3 :(得分:0)

在这里似乎不需要使用多个活动(这会大大降低您的应用速度)。如果要基于生成的随机数显示不同的图像,则根据该随机数的结果对图像视图仅 .setImageResource()

在下面的示例中,我分离了随机数生成( generateRandomInt()方法,该方法将随机整数存储在 thisRoll 变量中),并且仅在< strong> changeImageView()方法在onClick上运行。

public void changeImageView(View view){
    generateRandomInt();

    if (thisRoll == 1) {
        mainImage.setImageResource(R.drawable.s1);
    } else if (thisRoll == 2) {
        mainImage.setImageResource(R.drawable.s2);
    } else if (thisRoll == 3) {
        mainImage.setImageResource(R.drawable.s3);
    } else if (thisRoll == 4) {
        mainImage.setImageResource(R.drawable.s4);
    } else if (thisRoll == 5) {
        mainImage.setImageResource(R.drawable.s5);
    } else {
        mainImage.setImageResource(R.drawable.s6);
    }
    Toast.makeText(DiceRollActivity.this, thisRoll + " ...But The House Always Wins!", Toast.LENGTH_SHORT).show();
}