2014-11-23 63 views
2

因此,我想製作一個按鈕,每次按下它時,它都會更改按鈕上方的圖像。我總共有2個圖像,所以我不使用數組。假設我有image1.png和image2.png。默認圖像是image1,按下按鈕後,它會變成image2。如果我再次按下,它將轉向image1。在按鈕點擊(安卓)上更改兩個圖像

package blablablabla; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ImageView; 

public class MainActivity extends Activity { 

ImageView image; 

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

    image = (ImageView) findViewById(R.id.myicon); 
} 


public void onClick(View view) { 
    switch(view.getId()){ 
    case R.id.button1:{ 
     image.setImageResource(R.drawable.initial); 
     return; 
    } 
    } 
} 
} 

我想做一個if語句:如果圖像是image1,則將其更改爲image2,反之亦然。

問題:在我換成image2後,我無法切換回來。我知道我沒有寫代碼,因爲我犯了錯誤。

回答

2

好吧,我想這可能會做:

package blablablabla; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ImageView; 

public class MainActivity extends Activity { 

ImageView image; 
**boolean flag = true;** 

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

    image = (ImageView) findViewById(R.id.myicon); 
} 


public void onClick(View view) { 
    switch(view.getId()){ 
    case R.id.button1:{ 
    **if(flag) 
    {  
     image.setImageResource(R.drawable.initial); 
     flag=false; 
    } 
    else 
    { 
     image.setImageResource(R.drawable.secondary); 
     flag=true; 
    }** 
     return; 
    } 
    } 
} 
} 
+0

這樣一個簡單的解決方案,它的工作!我怎麼沒有想到這個.. – Cata 2014-11-23 08:35:58

+0

哈哈哈,沒問題,有時會發生:) – 2014-11-23 08:38:24

1

好吧,在你onCreate()在您找回您的ImageView,首先需要使用setTag()這樣就可以識別已經在它什麼樣的形象。一旦設置了ImageView的圖像,您就無法獲取資源ID。這僅僅是圍繞這樣一個工作,做到這一點:現在

image = (ImageView) findViewById(R.id.image); 
image.setTag(R.drawable.image1); 

,在你onClick()你可以做如下:基於

int tag = (int) image.getTag(); 
if(tag == R.drawable.image1){ 
    image.setImageDrawable(getResources().getDrawable(R.drawable.image2)); 
    image.setTag(R.drawable.image2); 
}else{ 
    image.setImageDrawable(getResources().getDrawable(R.drawable.image1)); 
    image.setTag(R.drawable.image1); 
} 

https://stackoverflow.com/a/14474954/1894684

您還可以使用setImageResource ()代替setImageDrawable()。前者在UI線程上進行圖像解碼,雖然

+0

嗯,我明白了。但爲什麼你使用set.ImageDrawable?我的意思是,你也可以使用setImageResource,對吧? 編輯:哦,現在我看到底部文本!感謝您的回答!! – Cata 2014-11-23 08:45:50