2013-07-12 63 views
2

我有兩個播放和暫停按鈕(當前不可見)和一個搜索欄。當我按下播放按鈕時,暫停按鈕應該變得可見,而當我按下暫停按鈕時,它應該變爲不可見。在Android活動中切換按鈕可見性

我該怎麼做?

import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.app.Activity; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.SeekBar; 
import android.widget.SeekBar.OnSeekBarChangeListener; 


    public class MainActivity extends Activity implements Runnable, OnClickListener, OnSeekBarChangeListener{ 
     private SeekBar seekBar; 
     private Button startMedia; 
     private Button pauseMedia; 
     private MediaPlayer mp; 

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

      AudioControl();   

     } 

     public void AudioControl(){ 
      seekBar = (SeekBar) findViewById(R.id.seekBar1); 
      startMedia = (Button) findViewById(R.id.button1); 
      pauseMedia = (Button) findViewById(R.id.button2); 
      seekBar.setOnSeekBarChangeListener(this); 
      startMedia.setOnClickListener(this); 
      pauseMedia.setOnClickListener(this); 
     } 



     public void run() { 
      int currentPosition= 0; 
      int total = mp.getDuration(); 
      while (mp!=null && currentPosition<total) { 
       try { 
        Thread.sleep(1000); 
        currentPosition= mp.getCurrentPosition(); 
       } catch (InterruptedException e) { 
        return; 
       } catch (Exception e) { 
        return; 
       }    
       seekBar.setProgress(currentPosition); 
      } 
     } 

     public void onClick(View v) { 
      if (v.equals(startMedia)) { 
       if (mp != null && mp.isPlaying()) return; 
       if(seekBar.getProgress() > 0) { 
        mp.start(); 
        return; 
       } 
       mp = MediaPlayer.create(MainActivity.this, R.raw.lone); 
       mp.start();      
       seekBar.setProgress(0); 
       seekBar.setMax(mp.getDuration()); 
       new Thread(this).start(); 
      } 

      if (v.equals(pauseMedia) && mp!=null) { 
       mp.pause(); 
      }  

     } 

     public void onStartTrackingTouch(SeekBar seekBar) { 
     } 

     public void onStopTrackingTouch(SeekBar seekBar) { 
     } 

     public void onProgressChanged(SeekBar seekBar, int progress, 
       boolean fromUser) { 
      if(fromUser) mp.seekTo(progress); 

     } 
    } 

我不知道我應該把打擊代碼。請幫幫我!

回答

0

您可以將pauseMedia的可見性設置爲不可見與下面的代碼:

pauseMedia.setVisibility(View.INVISIBLE); 

或將其設置爲可見:

pauseMedia.setVisiblity(View.VISIBLE); 
3
startMedia = (Button) findViewById(R.id.button1); 
pauseMedia = (Button) findViewById(R.id.button2); 

//Onclick Event ... 

//Logic 
if (flag === 'start') { 
startMedia.setVisibility(View.VISIBLE); 
pauseMedia .setVisibility(View.INVISIBLE); 
} else { 
startMedia.setVisibility(View.INVISIBLE); 
pauseMedia .setVisibility(View.VISIBLE); 
} 

GONE將使佈局管理器忽略小部件的尺寸。 INVISIBLE將使它不可見,但佈局管理器仍然會將它看作是在那裏。

如果您熟悉CSS,

  • setVisibility(View.INVISIBLE)就像是CSS不透明度:0
  • setVisibility(View.GONE)就像是CSS顯示:無
  • setVisibility(查看。可見)就像是CSS顯示:塊
+1

爲了澄清,GONE會讓佈局管理器忽略小部件的尺寸,所以沒有空白。相比之下,INVISIBLE會讓佈局管理員考慮這個小部件,所以你會看到一個空白的空間。 –

+0

我應該在哪裏放這個代碼? – hossein

+0

In public void onClick(View v) –

0

也許嘗試這樣的事:

的背景下,此功能

controls 

的是,當類被實例化

private void toggleControls(){ 

    //private variable to store whether or not the view is showing 
    if(controlsAreShowing){ 
     if(controls != null) { 
      controls.setVisibility(View.INVISIBLE); 
      controlsAreShowing = false; 
     } 
    }else{ 
     controls.setVisibility(View.VISIBLE); 
     controlsAreShowing = true; 
    } 
} 
16

我使用的任何觀點,即是充氣的觀點:

public void toggleView(View view){ 
if(view.getVisibility()==View.GONE) 
    view.setVisibility(View.VISIBLE); 
else if(view.getVisibility()==View.VISIBLE) 
    view.setVisibility(View.GONE); 
    } 
0

我覺得下面的代碼可以工作,

play.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Toast.makeText(getApplicationContext(), "Play", Toast.LENGTH_SHORT).show(); 
      mediaPlayer.start(); 
      pause.setEnabled(true); 
      play.setEnabled(false); 
     } 
    }); 

對於禁用暫停按鈕,

pause.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Toast.makeText(getApplicationContext(), "pause", Toast.LENGTH_SHORT).show(); 
      mediaPlayer.pause(); 
      pause.setEnabled(false); 
      play.setEnabled(true); 
     } 
    }); 

我認爲這段代碼可能適用於您的場景。