2013-02-07 47 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