2013-02-07 46 views
2

我在測驗應用程序中有一個活動,我想每5秒更改其背景。我如何隨機化我的可繪製文件夾中的圖像,並將它們作爲我活動的背景圖像。注意:這只是一項活動。在Android中隨機更改背景圖像

任何幫助將不勝感激。謝謝。

回答

1

使用HandlerTimertask爲每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); 
+0

我應該把這段代碼放到我的.java文件中,是否與我的xml活動相關聯? – Sam

+1

@Sam:將此代碼放在活動的活動(在.java活動類中) –

1

您可以創建可繪製的數組是這樣的:

<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示例中所示)。

+0

謝謝!我會試試:) – Sam

+0

我應該在哪裏放置數組代碼? – Sam

+0

在您的strings.xml文件中 – Ahmad

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()); 
     } 
    } 
}; 

} 
+0

我應該爲此創建一個新類嗎?我的活動? – Sam

+0

在我的代碼測試只是示例活動。使用可以使用處理器在你的活動類 –

+0

應該是'myarray.length'。 – cdrev