如何更改 xamarin 表单中的播放器图标

how to change player icon in xamarin forms

我需要一些人来帮助我如何以 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();
        }

谢谢。

我想你的意思是这样,没有添加图像。请改用 ImageButton。

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

<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();
    }

}

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

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

代码示例

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