2015-11-05 110 views
0

我是一個完整的android新手,所以對我來說很容易。 我有這個代碼,當你點擊一個按鈕時改變背景,但是我想每隔10秒改變背景,並且我想在文件img1.png,img2.png和img3.png之間切換,並且當循環完成時重新開始。提前致謝。 下面是代碼: 在 'MainActivity.java'通過編程方式更改背景

package lucas.app_2001; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.LinearLayout; 


public class MainActivity extends Activity { 
    /** Called when the activity is first created. */ 
    Button button; 
    LinearLayout mainLayout; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mainLayout=(LinearLayout)findViewById(R.id.myLayout); 
     button=(Button)findViewById(R.id.button1); 
     button.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View arg0) { 
       mainLayout.setBackgroundResource(R.drawable.yellowgradient); 
      } 
     }); 
    } 
} 

'MainActivity.xml':

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/myLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="64dp" 
     android:layout_marginTop="71dp" 
     android:text="Shout!" /> 

</LinearLayout> 
+0

看一看這太問題:如何設置背景繪製編程...](http://stackoverflow.com/questions/12523005) – 0X0nosugar

回答

0

你可以這樣說:

private Handler mHandler; 
private Runnable mRunnable; 
private int i = 0; 

MainActivity.java

public class MainActivity extends Activity { 
    /** Called when the activity is first created. */ 
    Button button; 
    LinearLayout mainLayout; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mainLayout=(LinearLayout)findViewById(R.id.myLayout); 
     button=(Button)findViewById(R.id.button1); 
     button.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View arg0) { 
       mainLayout.setBackgroundResource(R.drawable.yellowgradient); 
      } 
     }); 

     mHandler = new Handler(); 
     mRunnable = new Runnable(){ 
     @Override 
     public void run() { 
      i++; 
      if(i==1){ 
      mainLayout.setBackgroundResource(R.drawable.image_one); 
       }else if(i==2){ 
      mainLayout.setBackgroundResource(R.drawable.image_two); 
       }else if(i==3){ 
      mainLayout.setBackgroundResource(R.drawable.image_three); 
       i ==0; 
       } 

      mHandler.postDelayed(mRunnable , 10000); 
      } 
     }; 
     mHandler .post(mRunnable); 
    } 
} 

onStop()

if(mHandler!=null){ 
    mHandler.removeCallbacks(mRunnable); 
} 

完成

+0

它在模擬器上崩潰......任何想法爲什麼? –

+0

On ** onCreate **我得到這個錯誤:缺少超級調用一些方法,例如View#onDetachedFromWindow,要求你也調用超級實現作爲你的方法的一部分。 –

+0

添加了這行代碼sauper.onCreate(savedInstanceState);'但它仍然崩潰 –

0

使用while循環重複。

要延遲並保持10秒鐘嘗試這樣的事:

//wait 10 seconds 
     Button.postDelayed(new Runnable() { 

      @Override 
      public void run() { 
       Button.setClickable(true);       
      } 
     }, 10000); 
+0

事情是我不想要按鈕我只是希望能夠在用戶交互的圖像之間進行切換 –

+0

Im sry,那麼您應該使用處理程序並將代碼放置在onCreate – ImperialCode