微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

滑动伴奏时停止并重置视频-Xamarin.forms

如何解决滑动伴奏时停止并重置视频-Xamarin.forms

在我的xamarin.forms应用程序中,我有一个带有MediaElement作为模板的圆盘视图。视频从URL播放。我要实现的目标是,当用户滑动旋转物品时,我希望当前正在播放的视频需要停止并播放绑定到该单元格的下一个视频,而当我们向后滑动时,需要重新启动上一个视频。目前,正在播放的视频不会关闭,当我们滑动下一个视频时,它也会随之播放。

我该如何解决?任何帮助表示赞赏。

带有视频的轮播视图。

<CarouselView ItemsSource="{Binding }" >    
        <CarouselView.ItemTemplate>    
            <DataTemplate>                       
                <StackLayout HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"        >    
    
                 <MediaElement Autoplay="True" Aspect="AspectFill"
                  Source="{Binding Video}" /  
                </StackLayout>    
            </DataTemplate>    
        </CarouselView.ItemTemplate>    
    </CarouselView>    

解决方法

我们可以使用BindingContextChanged和PositionChanged事件。

<CarouselView ItemsSource="{Binding }" PositionChanged="carouselView_PositionChanged">    
        <CarouselView.ItemTemplate>    
            <DataTemplate>                       
                <StackLayout HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"        >    
    
                 <MediaElement AutoPlay="True" Aspect="AspectFill"
                  Source="{Binding Video}" BindingContextChanged="MediaElement_BindingContextChanged" />  
                </StackLayout>    
            </DataTemplate>    
        </CarouselView.ItemTemplate>    
    </CarouselView>

在后面的代码中

List<MediaElement> mediaElements = new List<MediaElement>();

private void MediaElement_BindingContextChanged(object sender,EventArgs e)
        {
            var element = sender as MediaElement;
            mediaElements.Add(element);
        }

        private void carouselView_PositionChanged(object sender,PositionChangedEventArgs e)
        {
            mediaElements[e.PreviousPosition].Stop();
        }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。