在 Android 中运行但在 UWP 中不运行的应用程序视频和 IndicatorView 不适用于 Xamarin Forms UWP

问题描述

我有关于 MediaElementIndicatorView 的问题。

Resources in Android

我在 Android 资源中有此视频可在 MediaElement 内播放。

它工作得非常好,我在 Android 中执行它时没有遇到问题。

但是当我将启动项目更改为 UWP 时,视频既不播放也不显示。并且 IndicatorView 不会自动滑动。

这是 UWP 资源。

UWP Resources

这是我的代码

IndexPage.xaml

<Grid>
        <MediaElement x:Name="BgVideo" Source="ms-appx:///video.mp4" ShowsPlaybackControls="False"
                      IsLooping="True" Autoplay="True" Aspect="AspectFill"
                      HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" >
        </MediaElement>

        <BoxView>
            <BoxView.Background>
                <LinearGradientBrush StartPoint ="1,0" EndPoint = "1,1">
                    <!--<GradientStop Color ="Transparent" Offset="0"></GradientStop>
                    <GradientStop Color ="#bdc3c7" Offset="0.9"></GradientStop>
                    <GradientStop Color ="#2c3e50" Offset="1"></GradientStop>-->
                    <GradientStop Color ="Transparent" Offset="0"></GradientStop>
                    <GradientStop Color ="#5D9FFF" Offset="0.48"></GradientStop>
                    <GradientStop Color ="#6BBBFF" Offset="1.0"></GradientStop>
                </LinearGradientBrush>
            </BoxView.Background>
        </BoxView>

        <Grid HeightRequest="280" Margin="30,30,100"
              RowSpacing="40" VerticalOptions="End">

            <Grid.RowDeFinitions>
                <RowDeFinition Height="Auto"/>
                <RowDeFinition Height="Auto"/>
                <RowDeFinition Height="Auto"/>
            </Grid.RowDeFinitions>

            <CarouselView x:Name="cvOnBoarding" IndicatorView="LandingIndicator" IsScrollAnimated="True"
                          ItemsSource="{Binding OnBoardings}" HorizontalOptions="End"
                          Grid.Row="0" IsSwipeEnabled="True" HorizontalScrollBarVisibility="Never">
                <CarouselView.ItemTemplate>
                    <DataTemplate>
                        <StackLayout Spacing="10">
                            <Label Text="{Binding Caption}" TextColor="White" FontSize="24" FontAttributes="Bold"
                                   WidthRequest="220" HeightRequest="150" HorizontalOptions="Start" LineBreakMode="WordWrap"></Label>
                            <Label Text="{Binding heading}" TextColor="White" FontSize="16" FontAttributes="Bold"
                                   WidthRequest="250" HeightRequest="150" HorizontalOptions="Start" LineBreakMode="WordWrap"></Label>
                        </StackLayout>
                    </DataTemplate>
                </CarouselView.ItemTemplate>
            </CarouselView>

            <IndicatorView x:Name="LandingIndicator" Grid.Row="1" IndicatoRSShape="Circle"
                           IndicatorColor="#B8B8B8" SelectedindicatorColor="#E7305E" HorizontalOptions="CenterandExpand" VerticalOptions="CenterandExpand"/>

            <StackLayout Grid.Row="2" VerticalOptions="Start" HorizontalOptions="End">
                <Grid>
                    <Button Grid.Column="0" x:Name="btnSignup" Text="Sign Up" HeightRequest="80" WidthRequest="145"
                        BackgroundColor="#E7305E" TextColor="White" CornerRadius="25" FontAttributes="Bold"/>
                    <Button Grid.Column="1" x:Name="btnLogin" Text="Login" HeightRequest="80" WidthRequest="145"
                        BackgroundColor="White" TextColor="#2E4159" CornerRadius="25" FontAttributes="Bold" Command="{Binding LoginCommand}"/>
                </Grid>
            </StackLayout>
        </Grid>
    </Grid>

IndexPage.xaml.cs

 public partial class IndexPage : ContentPage
    {
        Timer tmrAnimator;
        public IndexPage()
        {
            InitializeComponent();
            NavigationPage.SetHasNavigationBar(this,false);
            this.BindingContext = new Indexviewmodel();
            AnimateMe();
        }

        private void AnimateMe()
        {
            tmrAnimator = new Timer(5000) { AutoReset = true,Enabled = true };

            tmrAnimator.Elapsed += (s,e) =>
            {

                if (BgVideo.CurrentState != MediaElementState.Playing)
                {
                    BgVideo.Play();
                }


                Device.BeginInvokeOnMainThread(() =>
                {
                    if (cvOnBoarding.Position == 3)
                    {
                        cvOnBoarding.Position = 0;
                    }

                    cvOnBoarding.Position += 1;
                    LandingIndicator.Position = cvOnBoarding.Position;
                    
                });
            };
        }
    }

主要问题是,Android 项目运行良好,但在 UWP 项目中,它不起作用。我如何解决这个问题才能同时在项目中工作?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)