音乐播放器页面之音频播放页面设计

1.引言

    本篇将介绍音频播放页面的设计情况,也希望能将自己的心得与大家分享。

2.设计情况

2.1 总体设计

    XAML页面如下:

 <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <Grid.Resources>
            <cvt:MusicConverter x:Key="MusicPostionConverter"/>
        </Grid.Resources>
        <Grid.RowDefinitions>
            <RowDefinition x:Name="MediaGrid" Height="*"/>
            <RowDefinition x:Name="PlayerPostionGrid" Height="40"/>
            <RowDefinition x:Name="BttnGrid" Height="Auto"/>
        </Grid.RowDefinitions>
        <Border BorderThickness="1">
            <MediaElement x:Name="MediaPlayer" Stretch="Fill" VerticalAlignment="Center" HorizontalAlignment="Center" MediaOpened="MediaPlayer_MediaOpened" MediaEnded="MediaPlayer_MediaEnded" />
        </Border>
        <RelativePanel Grid.Row="1" >
            <Slider x:Name="PlayerPostion" Height="40" VerticalAlignment="Center" RelativePanel.AlignTopWithPanel="True" Value="{Binding ElementName=MediaPlayer,Path=Position, Converter={StaticResource MusicPostionConverter}, Mode=TwoWay}" Minimum="0.0" />
        </RelativePanel>
        <RelativePanel Grid.Row="2">
            <ToggleSwitch x:Name="SwtchMediaRepeat" OffContent="单曲循环" OnContent="顺序循环" HorizontalAlignment="Left"  VerticalAlignment="Center" RelativePanel.AlignLeftWithPanel="True"/>
            <StackPanel Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Horizontal" RelativePanel.AlignHorizontalCenterWithPanel="True" RelativePanel.AlignVerticalCenterWithPanel="True" >
                <Button x:Name="BttnPrevious" FontFamily="Segoe MDL2 Assets" Content="&#xEDD9;" Click="BttnPrevious_Click"/>
                <Button x:Name="BttnPlay" FontFamily="Segoe MDL2 Assets" Content="&#xEDB4;" Click="BttnPlay_Click"/>
                <Button x:Name="BttnStop" FontFamily="Segoe MDL2 Assets" Content="&#xEDB5;" Click="BttnStop_Click"/>
                <Button x:Name="BttnNext" FontFamily="Segoe MDL2 Assets" Content="&#xEDDA;" Click="BttnNext_Click"/>
            </StackPanel>
            <TextBlock Grid.Column="2" FontFamily="Segoe MDL2 Assets" Text="&#xE953;" HorizontalAlignment="Left"  VerticalAlignment="Center" Tapped="TextBlock_Tapped" RelativePanel.AlignRightWithPanel="True" Margin="0,15,30,0" >
                    <FlyoutBase.AttachedFlyout>
                        <Flyout>
                              <Slider x:Name="SldrVolume" Height="32" HorizontalAlignment="Center" VerticalAlignment="Center" Width="50" ValueChanged="SldrVolume_ValueChanged" Value="50" Minimum="0.0" Maximum="100.0"/> 
                        </Flyout>
                    </FlyoutBase.AttachedFlyout>
            </TextBlock>
        </RelativePanel>
    </Grid>

在这里我将这个页面分成三行,第二行的高度为40,第三行的高度为Auto,其余高度都分配到第一行。第一行放MeidElement控件,用于播放音频文件,第二行放Silder控件,用于显示音频文件的播放进度,第三行则依次放入播放顺序、播放按钮和音量调节按钮。

2.2 悬浮的音量调节控制

    总体的页面设计比较简单,个人认为悬浮的音量调节控制算得上一个亮点。效果简单演示一下:

效果演示

这里其实是使用了Flyout这个控件。对于Button控件而言,可以直接使用Button.Flyout属性,在Button的Click事件中,Flyout控件会自动打开。但是对于非Button控件而言,只能通过FlyoutBase.AttachedFlyout附件属性。以TextBlock为例,代码如下:

XAML语法

<TextBlock Text="Tapped事件触发Flyout" Tapped="TextBlock_Tapped">
    <FlyoutBase.AttachedFlyout>
        <Flyout>
            <!-- 浮出的UI内容 -->
        </Flyout>
    </FlyoutBase.AttachedFlyout>
</TextBlock>

C#代码

private void TextBlock_Tapped(object sender,TappedRoutedEventArgs e)
{
    FrameworkElement element = sender as FrameworkElement;
    if(element != null)
    {
        FlyoutBase.ShowAttchedFlyout(element);
    }
}

    Flyout控件一共有6种不同的类型:Flyout、DatePicker、TimePickerFlyout、PlickerFlyout、ListPickerFlyout和MenuFlyout。这些Flyout控件具体使用本篇则不涉及了。

2.3 MusicConverter

    Grid.Resources下的Converter是音频播放进度与Silder控件PlayerPostion的Value值的相互转化,涉及到数据绑定的知识,这里暂时不涉及。

3.效果演示

效果演示

转载于:https://www.cnblogs.com/xiao2/p/7100846.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于Vue的音乐播放器设计与实现可以包括以下几个步骤: 1. 创建Vue项目:首先,你需要使用Vue CLI创建一个新的Vue项目。可以使用以下命令创建一个新的Vue项目: ```shell vue create music-player ``` 2. 安装所需的依赖:在项目目录下,使用以下命令安装所需的依赖: ```shell cd music-player npm install axios vuex vue-router element-ui ``` 3. 设计页面结构:根据需求,设计音乐播放器页面结构。可以使用Vue的组件来构建页面,例如创建一个播放器组件、歌曲列表组件等。 4. 实现音乐播放功能:使用Vue的生命周期钩子函数和Vue的事件处理机制,实现音乐播放、暂停、切换等功能。可以使用第三方库如`howler.js`来处理音频播放。 5. 获取音乐数据:使用Axios库发送HTTP请求,从后端API获取音乐数据。可以使用Vue的状态管理库Vuex来管理音乐数据的状态。 6. 显示音乐信息:将获取到的音乐数据显示在页面上,例如歌曲名称、歌手、专辑封面等。 7. 实现歌曲列表功能:根据获取到的音乐数据,实现歌曲列表的展示和切换功能。可以使用Vue Router来实现歌曲列表的路由。 8. 添加其他功能:根据需求,可以添加其他功能,例如搜索歌曲、添加歌曲到收藏夹等。 9. 样式美化:使用CSS和Element UI等库来美化音乐播放器的样式。 10. 测试和部署:在开发完成后,进行测试并部署到服务器上。 这是一个基本的基于Vue的音乐播放器设计与实现的步骤。根据具体需求,还可以添加其他功能和优化。希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值