2017-03-09 91 views
0

我在我的操作欄中有一個播放按鈕,我希望當我點擊播放按鈕,然後等待時間,它將連接到我的實時流,它會顯示循環進度條,當它與流連接時暫停和播放按鈕將appear.like下面的圖片如何在操作欄中放置圓形進度條?

enter image description here

這裏是我的代碼,我使用

action_bar_progress.xml 
    <?xml version="1.0" encoding="utf-8"?> 
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    style="@android:style/Widget.ActionButton"> 
<ProgressBar 
    android:id="@+id/actionProgressBar" 
    android:layout_width="32dp" 
    android:layout_height="32dp" 
    android:visibility="visible" 
    android:layout_gravity="center" /> 
</FrameLayout> 

menu.xml文件類

enter code here 
     <?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item 
    android:title="play" 
    android:icon="@drawable/ic_play_arrow_black_24dp" 
    android:id="@+id/actionPlay" 
    app:showAsAction="always"/> 
<item 
    android:title="pause" 
    android:icon="@drawable/ic_pause_black_24dp" 
    android:id="@+id/actionPause" 
    app:showAsAction="always" 
    android:visible="false"/> 
<item 
    android:title="stop" 
    android:icon="@drawable/ic_stop_black_24dp" 
    android:id="@+id/actionStop" 
    app:showAsAction="always" 
    android:visible="false"/> 
<item 
    android:id="@+id/action_working" 
    android:actionLayout="@layout/action_bar_progress" 
    app:showAsAction="always" 
    android:title="@string/loadingActionBar" 
    /> 

MainActivity.java

 @Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    mnuPlay = menu.findItem(R.id.actionPlay); 
    mnuStop=menu.findItem(R.id.actionStop); 
    mnuPause=menu.findItem(R.id.actionPause); 
    mnuProgressBar = menu.findItem(R.id.action_working); 


    if(bConnected){ 
     if(mediaPlayer.isPlaying()){ 
      mnuPlay.setVisible(false); 
      mnuPause.setVisible(true); 
      mnuStop.setVisible(true); 
      mnuProgressBar.setVisible(false); 
     }else { 
      if (bShouldPlay) { 
       mnuPlay.setVisible(false); 
       mnuPause.setVisible(false); 
       mnuStop.setVisible(false); 
       mnuProgressBar.setVisible(true); 
      }else{ 
       mnuPlay.setVisible(true); 
       mnuPause.setVisible(false); 
       mnuStop.setVisible(false); 
       mnuProgressBar.setVisible(false); 
      } 
     } 
    }else{ 
     mnuPlay.setVisible(true); 
     mnuPause.setVisible(false); 
     mnuStop.setVisible(false); 
     mnuProgressBar.setVisible(false); 
    } 

    return super.onPrepareOptionsMenu(menu); 
} 
//Menu Item function start 
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 


    switch (item.getItemId()) 
    { 
     case R.id.actionPlay: 
      if (bConnected) 
      { 
       mediaPlayer.start(); 
       mnuPlay.setVisible(false); 
       mnuProgressBar.setVisible(false); 
       mnuPause.setVisible(true); 
       mnuStop.setVisible(true); 
       Toast.makeText(getBaseContext(), "Playing...", Toast.LENGTH_LONG).show(); 

      } 
      else 
      { 
       mnuPlay.setVisible(false); 
       mnuPause.setVisible(false); 
       mnuStop.setVisible(false); 
       bShouldPlay = true; 
       getMedia(); 
       mnuProgressBar.setVisible(true); 
       //Toast.makeText(getBaseContext(), "Still connecting...", Toast.LENGTH_LONG).show(); 
      } 

      break; 

     case R.id.actionPause: 
      //bPaused=true; 
      if (mediaPlayer.isPlaying()) 
      { 
       mediaPlayer.pause(); 
       bPaused=true; 
       mnuPause.setVisible(false); 
       mnuPlay.setVisible(true); 
       mnuStop.setVisible(true); 
       mnuProgressBar.setVisible(false); 
       Toast.makeText(MainActivity.this, "Paused!", Toast.LENGTH_SHORT).show(); 
      } 
      break; 

     case R.id.actionStop: 
      if (mediaPlayer.isPlaying() || bPaused) 
      { 
       Toast.makeText(this, "Stopping...", Toast.LENGTH_LONG).show(); 

       mediaPlayer.stop(); 
       mediaPlayer.release(); 
       bConnected = false; 
       bPaused=false; 
       bShouldPlay = false; 
       mnuPlay.setVisible(true); 
       mnuPause.setVisible(false); 
       mnuStop.setVisible(false); 
       mnuProgressBar.setVisible(false); 

       Toast.makeText(this, "Stopped!", Toast.LENGTH_LONG).show(); 

      } 
      break; 
     default: 
      break; 
    } 
    return super.onOptionsItemSelected(item); 
} 

當我上播放按鈕,點擊它,然後顯示文本我已經寫在標題..我所需要的圓形進度條而不是文本還有一件事如何設置錯誤messages.for例如,如果流不可用意味着脫機,然後如何連接後幾分鐘將顯示消息給用戶的流不可用..

+0

只是刪除** **所有權屬性,如果你只想顯示進度條 – sodhankit

+0

@sodhankit我試了一下,然後就什麼都不顯示.. – Parv

+0

請檢查連結http://計算器.com/questions/21333866/how-to-create-a-circular-progressbar-in-android-which-rotate-on-it – Pranita

回答

0

你可以使用裏面的進度條工具欄。工具欄只是一個ViewGroup中:

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar_main" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:background="#2196F3" 
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fitsSystemWindows="true" 
     android:orientation="horizontal"> 

     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight=".70" 
      android:gravity="center" 
      android:orientation="horizontal" 
      android:text="left"> 

      <TextView 
       android:id="@+id/toolbar_title" 
       style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:text="Tital" 
       android:textColor="@color/white" 
       android:textSize="20dp" 
       android:textStyle="bold" /> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_weight=".30" 
      android:text="right"> 

      <ProgressBar 
       android:id="@+id/actionProgressBar" 
       android:layout_width="32dp" 
       android:layout_height="32dp" 
       android:layout_gravity="center" 
       android:visibility="visible" /> 
     </LinearLayout> 
    </LinearLayout> 
</android.support.v7.widget.Toolbar> 
+0

thnx @saquib但我不想隱藏我的動作吧..他們的任何方式把圓形酒吧放在行動吧 – Parv