2017-12-19 9 views
-4

私はアプリを作る必要があり、どこかをクリックして彼の背景を変えたときのことです。どうやってやるの?そして私は、drawableフォルダを使ってそれを行うことができますか?例10個の異なるイメージを作成し、それをドロウアブル・フォルダにコピーします。どこかをクリックすると、10種類の画像をランダム化できますか? 編集 私は背景を無作為化する方法は?

REQUESTに基づいて更新
+1

これは問題の説明ですが、**あなたが試したことはありません**。あなたはまた** **他のすべての単語を** BOLD **する必要はありません。 – tadman

答えて

0

開始することができますどこ私は知らないので、私は

 final RelativeLayout rootLayout = (RelativeLayout)findViewById(R.id.myRootLayout); 
    final Random random = new Random(3); //generates 0 to 2 (as you set seed of 3 digits starting from 0) 

    final List<Integer> myBackgroundImages = new ArrayList<Integer>(); 
    myBackgroundImages.add(R.drawable.add_person); 
    myBackgroundImages.add(R.drawable.add_photo_album); 
    myBackgroundImages.add(R.drawable.add_key_box); 


    rootLayout.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      rootLayout.setBackground(myBackgroundImages.get(random.nextInt()); //will be 0, 1, or 2 
     } 
    }); 

例と、何かをしようとしなかった私はあなたを示すためにのonCreate内のすべてのこれをしませんでした例えば、上のような同じ方法でそれらをやっているのでなければ、値を確定する必要はありません。クラスとレイアウトの変数を変えてクリックリスナーを設定することをお勧めしますが、これはどのように動作するのかを十分に示すはずです。もちろん

OLD ANSWER LEFT FOR HISTORY

これを行うには多くの方法があります。データバインディングを使用している場合は、XMLファイルにバインドされているドロウアブルプロパティを持つだけで、バインディングでこれを行うことができます。

あなたはバインディングを使用していない場合は、単純にそれを更新するコードで、その後<RelativeLayout id = some id that you will use

のようなあなたのバックグラウンドのルート要素にIDを入れました。 someIdThatYouUse.setBackground(R.drawables.myDrawable1)。

ランダム化する方法を尋ねる場合は、複数の方法があります。各drawableの名前をrandom_1とrandom_2のように指定し、String num =(new Random(9).nextInt()+ 1).toString()のようなランダムジェネレータを作成することができます。

名前からリソースを取得するには、「random_」+ numという名前を付けます。 それとも、

myList.add(R.drawable.myfirstone) myList.add(R.drawable.someotherImage)のようなドロウアブルのリストを作ることができ など。

が、その後に0から乱数を作成します9.

次に、rootLayout.setBackground(myList.get(randomNumber)); もちろん、OSのバージョンをチェックし、正しいsetBackgroundとsetBackgroundDrawableを使用して、あなたの最小限のサポートと互換性があることを確認してください。

希望に役立ちます。

+0

もっと正確に説明できますか?私はdrawableに5つの画像(ID:青、黄、緑、黒、赤)を持っています。解像度は1080x1920です。私が画面のどこかをタップすると、アプリはランダムに背景を変更するようにします。 – Tamas

+0

ここで私の答えを更新します – Sam

関連する問題