J'ai étudié ce haut & bas, à la fois sur ici, et les intertubes en général. Malheureusement, je n'ai trouvé rien applicable, même sur l'API 'droid java pour la classe Button
.Android java: la couleur du bouton bascule 'ligne' @ bas ne bascule pas correctement
Dans mon application, j'ai un bouton que j'utilise pour basculer la lecture d'un AudioTrack
. Lorsque ce bouton est basculé manuellement, la barre horizontale au bas de (mais toujours dans les limites du bouton) change de couleur correctement. Ceci étant noir lorsque vous ne jouez pas, et rouge quand vous jouez, bien que je n'ai pas codé quoi que ce soit concernant cette fonction.
Malheureusement, lorsque le bouton est basculé via le code d'une méthode/fonction anonyme de l'écouteur AudioTrack
, ce changement de couleur ne se produit pas. En conséquence, le changement de couleur de la barre du bouton alterne le comportement de changement de couleur avec chaque jeu autorisé à terminer. Code Listener suit:
public void onMarkerReached(AudioTrack track) {
if (playing && !continuous) {
ouahful.stop();
btnTogglePlayback.setText(
getResources().getString(
R.string.text_off));
playing = !playing;
}
}
Code Basculement suit:
public void onTogglePlay(View view) throws MyException {
byte sounds[] = initSound(freq);
/* AudioTrack ouahful = new AudioTrack(AudioManager.STREAM_MUSIC,
sampleRate, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT,
sounds.length, AudioTrack.MODE_STATIC); */
if (!playing) {
if (regen) {
sounds = initSound(freq);
}
ouahful = buildTrack(sounds);
ouahful.setNotificationMarkerPosition(numSamples);
setATListeners();
btnTogglePlayback.setText(getResources().getString(R.string.text_on));
ouahful.play();
} else {
btnTogglePlayback.setText(getResources().getString(R.string.text_off));
ouahful.stop(); //need to convert to save the track beyond this method
}
if ((freq != getResources().getInteger(R.integer.freq1)) &&
(freq != getResources().getInteger(R.integer.freq2)) &&
(freq != getResources().getInteger(R.integer.freq3))) {
rgrp.clearCheck();
}
btnSetManually.setEnabled(false);
playing = !playing;
}
Je ne pense pas d'autres extraits de code sont applicables à cette question. Toutes mes excuses si je me trompe, n'hésitez pas à me faire savoir quelles autres informations seraient utiles pour ce problème.
Un grand merci à toutes les informations et/ou des pointeurs pour résoudre ce problème!