2014-05-13 323 views
0

我使用eclipse來編寫我的android應用程序,我想知道如何在單擊按鈕時更改MainActivity的背景圖像。我有img1.png和img2.png。背景是當前設置與以下XML代碼img1.png:按鈕點擊更改背景圖片

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/img1" 
    tools:context=".MainActivity" > 
<Button 
     android:id="@+id/btn1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="46dp" 
     android:layout_marginTop="55dp" 
     android:background="@android:color/transparent" 
     android:text="" /> 

</RelativeLayout> 

我只是不確定我會用什麼Java代碼來改變BTN1點擊背景圖像。

+0

使用可繪製的狀態 – Jimmy

回答

5

此代碼可用於設置背景圖像programmattically

RelativeLayout layout =(RelativeLayout)findViewById(R.id.relativelayout); 
layout.setBackgroundResource(R.drawable.img1); 
+0

您是否也可以對線性佈局執行此操作,或者這是僅相對佈局功能?只是在流浪。 – N8sBug

+1

是的,LinearLayout也可以像LinearLayout layout =(LinearLayout)findViewById(R.id.linearlayout);' – Lal

+1

不需要投射。 'findViewById'返回'View','RelativeLayout'和'LinearLayout'都是'View's,'setBackgroundResource'是'View'方法。 –

0

這可能是一個解決方案。

在佈局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/lyt_main" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@drawable/img1" 
tools:context=".MainActivity" > 

在你的活動

RelativeLayout layout; 
public void onCreate(Bundle savedInstanceState){ 
super.onCreate(Bundle savedInstanceState); 
setContentView(your_xml.xml); 
layout = (RelativeLayout) findById(R.id.lyt_main); 
button = (Button) findById(R.id.lyt_main); 
button.setOnClickListener(new OnClickListener{ 
     public void onClick(View v) { 
       layout.setBackgroundDrawable(your_image)); 
     } 
}); 
} 
+0

我將更改R.id.lyt_main到什麼? – user1300788

0

加入Android的ID給您的佈局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@drawable/img1" 
     android:id="@+id/rlayout" 
     tools:context=".MainActivity" > 
... 
</RelativeLayout> 

現在,在您MainActivity.java:

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

     Button btn = (Button) findViewById(R.id.btn1); 

     btn.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       RelativeLayout rlayot = (RelativeLayout) findViewById(R.id.rlayout); 
       rlayot.setBackgroundResource(R.drawable.img2); 
      } 
     }); 
    }