![](/img/trans.png)
[英]How to make it so when I press load game it not only loads the information but brings you into the game in that state?
[英]How to use randomization, so when you press a button it brings you to a random screen
我在計算機科學實驗室的時間里一直在尋找有關此問題的答案。 我們正在為此應用程序使用Android Studio。
我想做的是,當您單擊按鈕時,使用隨機化使一組屏幕隨機化。 我的二人組正在開發骰子滾動應用程序,我們的想法是為骰子的每個側面制作六個不同的屏幕。 基本上,當我們單擊按鈕“擲骰子”時,它會思考一秒鍾,然后將您帶到隨機頁面,其中包含您獲得的骰子上的數字圖片。
這太不可思議了,我已經連續搜索了至少3個小時,但沒有找到解決該問題的方法。 如果有人需要有關該問題的更多信息(因為我不知道如何恰當地表達它),請問我。
只需使用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
希望有幫助!
精確執行所需操作的最簡單方法是將“活動”放入數組中,然后使用“ Random
類的nextInt
方法進行選擇,以從數組中選擇適當的活動。
話雖這么說,您很可能想用兩個圖像創建一個活動,而不是選擇要顯示的活動或片段,而是要選擇要加載到活動中的圖像。
我建議使用片段來實現這一目標。
創建片段列表
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();
在這里似乎不需要使用多個活動(這會大大降低您的應用程序速度)。 如果要基於生成的隨機數的結果顯示不同的圖像,則只需基於該隨機數的結果為Image View顯示.setImageResource() 。
在下面的示例中,我分離了隨機數生成( generateRandomInt()方法在thisRoll變量中存儲隨機整數),並且僅在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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.