【发布时间】:2017-07-30 02:10:33
【问题描述】:
我的操作栏中有一个播放按钮,我希望当我单击播放按钮时,连接到我的实时流所需的等待时间将显示圆形进度条,以及当它连接到流时将出现暂停和播放按钮。如下图所示
这是我使用的代码
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);
}
当我点击播放按钮时,它会显示我在标题中写的文本..我需要圆形进度条而不是那个文本以及如何设置错误消息的另一件事。例如,如果流不可用意味着离线然后在连接几分钟后它将如何向用户显示消息流不可用..
【问题讨论】:
-
如果您只想显示进度条,只需删除 title 属性
-
@sodhankit 我试过了然后什么也没显示..
-
谢谢@prakshi 的建议,但它对我不起作用......