1

2 つの画像ボタンを重ねて表示する設定で問題が発生しました。アイデアは、再生/一時停止コントロールを実装することです。問題は、可視性の設定が実際に機能する唯一の部分が、ボタンのクリック リスナーにあることです。他の場所に変更しようとしても、何も起こりません。なぜこれが起こっているのですか?

playBtn.setOnClickListener(new OnClickListener() {//PLAY BUTTON LISTENER
    public void onClick(View v) {
 playBtn.setVisibility(ImageButton.GONE);
 pauseBtn.setVisibility(ImageButton.VISIBLE);
 mp.start();
    }});

pauseBtn.setOnClickListener(new OnClickListener() {//PAUSE BUTTON LISTENER
 public void onClick(View v) {
  pauseBtn.setVisibility(ImageButton.GONE);
  playBtn.setVisibility(ImageButton.VISIBLE);
  mp.pause();
 }});

final class SeekBarTask extends TimerTask {
  public SeekBarTask(int duration) {

  }
  @Override
  public void run() {
   if(seekBar.getProgress() >= mp.getDuration()) {//IF SONG HAS FINISHED...
    pauseBtn.setVisibility(ImageButton.GONE);//THESE ONES
    playBtn.setVisibility(ImageButton.VISIBLE);//DOESN'T WORK
    mp.stop();
   }
   else {
   seekBar.incrementProgressBy(100);
   }
  }
 }
4

4 に答える 4

1

のアイコンを変更することをお勧めしますImageButton

于 2010-04-24T11:26:41.653 に答える
0

2つのうちの1つだけが起こっていると思います。このコードがヒットしないか、変数が期待しているのと同じオブジェクト インスタンスを参照していないかのいずれかです。その条件内にブレークポイントを設定しましたか? そこでブレークポイントがヒットすることを確認し、変数が正しいボタン インスタンスを指していることを確認します。

私が尋ねなければならないコードの残りを見ずに...なぜ、完了コールバックでメディアプレーヤーを使用するのではなく、「再生が終了した」状態をプログレスバーでチェックしているのですか?

私は非常に似たようなことをしており、MediaPlayer の OnCompletionListener を使用してボタンの可視性を切り替えています。

于 2010-04-24T13:28:21.433 に答える
0

Android GUI操作の詳細は覚えていませんが、別のスレッドから実行していて、そうする必要がないことをしなければならないのでしょうか?

于 2010-04-24T13:45:39.527 に答える
0

アニメーションを設定した場合、ImageButton を View.INVISIBLE に設定しても機能しないことに気付きました。アニメーションを削除してから非表示にする必要があります。悪い落とし穴だと思います...

于 2012-07-08T11:41:43.967 に答える