クイズ アプリケーションにアクティビティがあり、その背景を 5 秒ごとに変更したいと考えています。ドローアブル フォルダー内の画像をランダム化し、アクティビティの背景画像にする方法を教えてください。注: 単一のアクティビティのみです。
どんな助けでも大歓迎です。ありがとうございました。
クイズ アプリケーションにアクティビティがあり、その背景を 5 秒ごとに変更したいと考えています。ドローアブル フォルダー内の画像をランダム化し、アクティビティの背景画像にする方法を教えてください。注: 単一のアクティビティのみです。
どんな助けでも大歓迎です。ありがとうございました。
次のように、ドローアブルの配列を作成できます。
<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 の例のように)。
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);
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());
}
}
};
}