2016-09-02 2 views
0

Ich möchte die Bilder in der Bildansicht auf Onclick Funktion ändern. Ich habe dies bereits versucht:Bild in Bildansicht onClick ändern

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(); 
       } 
      } 
     } 
    }); 

Antwort

1

bt_audiocapture.getResources().getDrawable(R.drawable.ic_mic) gibt ein Drawable Objekt. Sie können es nicht mit R.drawable.ic_mic vergleichen, was integer ist. Das ist so etwas wie das Vergleichen eines car mit green color.

Ihre Aufgabe zu erfüllen, einige Feld wie private int state = 0; machen, und einige Konstanten wie

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

und dann:

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

Danke Vlad, es hat wirklich für mich funktioniert :) –

0

Ihre equals Ausdrücke immer false zurück, würde ich, dass keiner erwarten Ihrer if Blöcke wird ausgeführt. Hast du diesen Code debuggt?

Ich würde vorschlagen, den Zustand in einer anderen Variablen, z.B. mit einem enum.

Zusätzlich sollten Sie aus Leistungsgründen setImageDrawable verwenden. Siehe die javadoc von setImageResource:

Dies tut Bitmap Lesen und Dekodieren auf dem UI-Thread, der eine Latenz Schluckauf

+0

Hallo Jayearn ia hve versucht mit setImageDrawable Methode .. aber es gibt mir einen Fehler –

0

Versuchen dieser Code kann dazu führen, seine für mich arbeiten: -

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); 

      } 
     } 
    }); 
Verwandte Themen