2

クイズ アプリケーションにアクティビティがあり、その背景を 5 秒ごとに変更したいと考えています。ドローアブル フォルダー内の画像をランダム化し、アクティビティの背景画像にする方法を教えてください。注: 単一のアクティビティのみです。

どんな助けでも大歓迎です。ありがとうございました。

4

3 に答える 3

2

次のように、ドローアブルの配列を作成できます。

<array name="myImages">
       <item>@drawable/img1</item>
       <item>@drawable/img2</item>
       <item>@drawable/img3</item>
</array>

次のように取得できます。

Resources res = getResources();
TypedArray myImages = res.obtainTypedArray(R.array.myImages);

乱数を作成します。

Random r = new Random(myImages.length())
int i = r.nextInt();

Drawable drawable = icons.getDrawable(i);

5 秒ごとに背景として設定します (ρяσσρєяs の例のように)。

于 2013-02-07T01:49:11.313 に答える
1

Handlerまたはを使用Timertaskして、アクティビティの背景を 5 秒ごとに次のように変更します。

public static int count=0;
int[] drawablearray=new int[]{R.drawable.One,R.drawable.Two,..};
new Handler().postDelayed(new Runnable() {
    public void run() {

       if(count<drawablearray.length){

           Your_Current_Activity.this.getWindow().
               setBackgroundDrawableResource(drawablearray[count]);

           count++;  //<<< increment counter here
        }
       else{
          // reset counter here
          count=0;
        }

      }
  }, 5000);
于 2013-02-07T01:45:23.843 に答える
1
public class Test extends Activity{
    //instantiate a handler object
private Handler imageHandler = new Handler();
    //array containing drawables ids
int[] myarray = new int[]{R.drawable.image1,.....};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //add a runnable to the message queue
    imageHandler.post(handle);
}

private final Runnable handle = new Runnable(){
    public void run(){
        try {
            Random r = new Random();
            int i = r.nextInt(myarray.length);
            Test.this.getWindow().setBackgroundDrawableResource(myarray[i]);
            imageHandler.postDelayed(this, 5000);    
        }
        catch (Exception e) {
            Log.d("Test", e.toString());
        }   
    }
};

}
于 2013-02-07T01:52:18.100 に答える