我在计算机科学实验室里一直在寻找有关此问题的答案。我们正在为此应用程序使用Android Studio。
我想做的是单击按钮时使用随机化来使一组屏幕随机化。我的二人组正在开发骰子滚动应用程序,我们的想法是为骰子的每个侧面制作六个不同的屏幕。基本上,当我们单击按钮“掷骰子”时,它会思考一秒钟,然后将您带到随机页面,其中包含您获得的骰子上的数字图片。
这太不可思议了,我已经连续搜索了至少3个小时,但没有找到解决该问题的方法。如果有人需要有关该问题的更多信息(因为我不知道如何恰当地表达它),请问我。
答案 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();
}