2015-11-05 112 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