【问题标题】:how to change player icon in xamarin forms如何更改 xamarin 表单中的播放器图标
【发布时间】:2021-10-27 01:36:14
【问题描述】:

请我需要一些人来帮助我了解如何将播放器图标更改为 xamarin 表单中的播放器页面

这是我的代码:

PlayerPage.xaml

                              <StackLayout>
                                           <Button x:Name="btnpause"
                                                    WidthRequest="20" 
                                                    HeightRequest="20"
                                                    HorizontalOptions="Center"
                                                    ImageSource="pause.png" />
                                           <Button x:Name="btnPlay"
                                                    WidthRequest="20" 
                                                    HeightRequest="20"
                                                    HorizontalOptions="Center"
                                                    ImageSource="play.png" />
                                        <Switch x:Name="switchLoop" IsToggled="False" />
                            </StackLayout>

PlayerPage.xaml.cs

        ISimpleAudioPlayer player;
        public PlayerPage()
        {
            InitializeComponent();

            var player = Plugin.SimpleAudioPlayer.CrossSimpleAudioPlayer.Current;

            player.Load("music.mp3");


            btnPlay.Clicked += BtnPlayClicked;
            switchLoop.Toggled += SwitchLoopToggled;
        }

        private void SwitchLoopToggled(object sender, ToggledEventArgs e)
        {
            Plugin.SimpleAudioPlayer.CrossSimpleAudioPlayer.Current.Loop = switchLoop.IsToggled;
        }

        private void BtnPlayClicked(object sender, EventArgs e)
        {
            Plugin.SimpleAudioPlayer.CrossSimpleAudioPlayer.Current.Play();
        }

谢谢。

【问题讨论】:

  • “如何更改播放器图标” - 这是什么意思?改成什么?触发条件是什么?你已经尝试了什么?你有什么具体问题?
  • 例如;如果用户想播放,会显示暂停图标,如果用户想暂停,也会显示播放器图标。

标签: xamarin.forms


【解决方案1】:

看看PlaybackEnded,当音频播放成功时触发。

您可以控制按钮在事件中的可见性。

代码示例

var player = Plugin.SimpleAudioPlayer.CrossSimpleAudioPlayer.Current;
player.PlaybackEnded += (sender,e)=>
{
     btnPlay.IsVisible = true;
     btnpause.IsVisible = false;
};

【讨论】:

  • 还没有完成
  • 您是否调试过PlaybackEnded 在视频完成时触发。
  • 是的,我这样做了。这就是我需要的:请看下@BasH 已回答的检查和协助。我希望您在代码中添加一些逻辑,以便在媒体播放完毕时更新按钮。感谢您的贡献。我真的很感激
  • 进行了更改以使用 PlaybackEnded 作为@ColeX 的意思,github.com/borisoprit/MusicStackOverflow
  • 好的,先生。谢谢。
【解决方案2】:

我想你的意思是这样,没有添加图像。使用 ImageButton 代替。

在开始按钮播放和循环开关时,当开关为 True 时,声音会自行重复。当启动暂停按钮显示按下它播放再次显示恢复。示例项目在 Github https://github.com/borisoprit/MusicStackOverflow

<StackLayout>
        <ImageButton
            x:Name="btnPlay"
            HeightRequest="50"
            HorizontalOptions="Center"
            Source="Play.png"
            VerticalOptions="Center"
            WidthRequest="50" />
        <ImageButton
            x:Name="btnPause"
            HeightRequest="50"
            HorizontalOptions="Center"
            Source="pause.png"
            VerticalOptions="Center"
            WidthRequest="50" 
            IsVisible="false"/>
        <Label
            HorizontalOptions="Start"
            Text="Loop:"
            VerticalOptions="Center" />
        <Switch
            x:Name="switchLoop"
            HorizontalOptions="Start"
            IsToggled="False"
            VerticalOptions="Center" />
    </StackLayout>

PlayerPage.xaml.cs 我也放置了 OnAppearing。这是 btnpause Isvisible = false 的状态。音乐结束播放按钮在那里,暂停再次隐藏。

 public HeadProjectAudioPage()
    {
        InitializeComponent();

        btnPause.IsVisible = false;

        var player = Plugin.SimpleAudioPlayer.CrossSimpleAudioPlayer.Current;
      
        player.PlaybackEnded += (sender, e) =>
        {
            btnPlay.IsVisible = true;
            btnPause.IsVisible = false;
        };
        player.Load("running.mp3");


        btnPlay.Clicked += BtnPlayClicked;
        btnPause.Clicked += BtnPauseClicked;
        switchLoop.Toggled += SwitchLoopToggled;
    }
    protected override void OnAppearing()
    {
        base.OnAppearing();
        btnPause.IsVisible = false;
    }

    private void SwitchLoopToggled(object sender, ToggledEventArgs e)
    {
        Plugin.SimpleAudioPlayer.CrossSimpleAudioPlayer.Current.Loop = switchLoop.IsToggled;
    }

    private void BtnPlayClicked(object sender, EventArgs e)
    {
        btnPause.IsVisible = true;


        btnPlay.IsVisible = false;
        Plugin.SimpleAudioPlayer.CrossSimpleAudioPlayer.Current.Play();

       
    }
    private void BtnPauseClicked(object sender, EventArgs e)
    {
        btnPlay.IsVisible = true;
        btnPause.IsVisible = false;
        Plugin.SimpleAudioPlayer.CrossSimpleAudioPlayer.Current.Pause();
    }

}

【讨论】:

  • 这是一个显示或隐藏按钮的简短示例,带有 Clicked 事件。也许你可以把它植入到你自己的项目中
  • 我已经将它植入到我自己的项目中,但是当它完成播放时,它无法回到正常的播放按钮。当我播放完成后赞美播放时,暂停按钮仍然保持打开状态,而不是显示播放按钮。
  • 现在按钮只会响应点击事件而改变。如果您还希望在媒体播放完毕时更新按钮,则需要添加一些在媒体播放完毕时发生的逻辑
  • 好的,请努力向我展示逻辑。谢谢。
  • 查看播放器中有哪些可用的事件。或者看看是否有像 Playing 这样的 bool 属性,您可以将控件的可见性绑定到
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-04
  • 2018-03-08
  • 1970-01-01
相关资源
最近更新 更多