簡體   English   中英

如何使用隨機化,因此當您按下按鈕時,它將帶您進入隨機屏幕

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM