2013-06-25 92 views
1

我正在处理一个Android应用程序,其中我希望每5秒后更改背景图像。我有我的可绘制文件夹中的所有图像。如何在几秒钟后自动更改背景图片?

我给我正在使用的代码,但我没有得到输出。作为输出,我得到一个不变的静止图像。

请帮

感谢

[CODE]

public class Home extends Activity { 

public static int count=0; 
int[] drawablearray=new int[]{R.drawable.slider_1,R.drawable.slider_2,R.drawable.slider_3,R.drawable.slider_4,R.drawable.slider_5}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_home); 

    new Handler().postDelayed(new Runnable() { 
     public void run() { 

      if(count<drawablearray.length){ 

       Home.this.getWindow(). 
        setBackgroundDrawableResource(drawablearray[count]); 
       count++; //<<< increment counter here 
      } 
      else{ 
       // reset counter here 
       count=0; 
      } 

      } 
     }, 5000); 
} 
} 

回答

0
final Handler h = new Handler(); 
Runnable r = new Runnable() { 
    public void run() {  
     Home.this.getWindow().setBackgroundDrawableResource(drawablearray[count]); 
     count += (count+1)%drawablearray.length; //<<< increment counter here 
     h.postDelayed(this, 5000);  
    } 
}; 

现在称之为像

h.postDelayed(r, 5000); 
+0

得到一个错误,把这个中的onCreate –

+0

@AkshaySethi ..什么是错误?我只是在这里写了大致 – stinepike

+0

作了两个小改动,请现在检查 – stinepike

0

我认为使用xmls会更容易。您可以更改活动主布局的背景。

尝试这样:

public class Home extends Activity { 

public static int count=0; 
int[] drawablearray=new int[]{R.drawable.slider_1,R.drawable.slider_2,R.drawable.slider_3,R.drawable.slider_4,R.drawable.slider_5}; 

LinearLayout ll; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_home); 

    ll = (LinearLayout) findViewByID(R.id.mainlayout) //It depends of the name that you gave to it 

    new Handler().postDelayed(new Runnable() { 
     public void run() { 
       ll.setBackgroundDrawable(drawablearray[count]); 
       // or ll.setBackgroundResource(resid) if you want. 
       count += (count+1)%drawablearray.length; 
      } 
     }, 5000); 
} 
} 
+0

先生我试图使用此代码,但我仍然在背景中获得一张照片 –

0

你可以做到这一点使用定时器

public class Home extends Activity { 

public static int count=0; 
int[] drawablearray=new int[]{R.drawable.slider_1,R.drawable.slider_2,R.drawable.slider_3,R.drawable.slider_4,R.drawable.slider_5}; 
Timer _t; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_home); 
    lnMain = (LinearLayout) findViewById(R.id.lnMain); 
     _t = new Timer(); 
     _t.scheduleAtFixedRate(new TimerTask() { 
      @Override 
      public void run() { 

       runOnUiThread(new Runnable() // run on ui thread 
       { 
        public void run() { 
         if (count < drawablearray.length) { 

          lnMain.setBackgroundDrawable(drawablearray[count]); 
          count = (count + 1) % drawablearray.length; 
         } 
        } 
       }); 
      } 
     }, 5000, 5000); 
} 
}