2016-09-02 67 views
0

我想更改Onclick函數的圖像視圖中的圖像。我已經嘗試過這樣的:在imageview中更改圖像onClick

bt_audiocapture.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View view) { 

      if (checkPermission()) { 

       if (bt_audiocapture.getResources().getDrawable(R.drawable.ic_mic).equals(R.drawable.ic_mic)) { 
        start(); 
        bt_audiocapture.setImageResource(R.drawable.ic_stop); 
       } else if (bt_audiocapture.getResources().getDrawable(R.drawable.ic_stop).equals(R.drawable.ic_stop)) { 
        stop(); 
        bt_audiocapture.setImageResource(R.drawable.ic_play); 
       } else if (bt_audiocapture.getResources().getDrawable(R.drawable.ic_play).equals(R.drawable.ic_play)) { 
        play(); 
       } 
      } 
     } 
    }); 

回答

1

bt_audiocapture.getResources().getDrawable(R.drawable.ic_mic)返回Drawable對象。您無法將其與R.drawable.ic_mic比較,即integer。這就像比較cargreen color

爲了完成你的任務,使一些外地像private int state = 0;,和一些常量像

private final STATE_PLAYING = 1; 
private final STATE_STOPPED = 2; 
private final STATE_NONE = 0; 

然後:

if (state == STATE_NONE) { 
    start(); 
    bt_audiocapture.setImageResource(R.drawable.ic_stop); 
    state = STATE_PLAYING; 
} else if (state == STATE_PLAYING) { 
    stop(); 
    bt_audiocapture.setImageResource(R.drawable.ic_play); 
    state = STATE_STOPPED; 
} else if (state == STOPPED) { 
    play(); 
    state = STATE_PLAYING; 
} 
+0

謝謝弗拉德,它真的爲我工作:) –

0

equals表達式總是返回false,我可以預料,關你if塊被執行。你調試過這個代碼了嗎?

我會建議保持在另一個變量,例如,與enum

另外,出於性能方面的原因,您應該使用setImageDrawable。見setImageResource的Javadoc:

這確實位圖讀取和解碼的UI線程,這可能導致延遲打嗝

+0

嗨jayearn ia試圖使用setImageDrawable方法..但它給了我一個錯誤 –

0

試試這個代碼,它爲我工作於: -

img = (ImageView) findViewById(R.id.img); 
    img.setTag(0); 
    img.setImageResource(R.drawable.images); 
    img.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      if (Integer.parseInt(img.getTag().toString()) == 0) { 
       img.setImageResource(R.drawable.cam); 
       img.setTag(1); 

      } else { 
       img.setImageResource(R.drawable.images); 
       img.setTag(0); 

      } 
     } 
    });