android 我想在Maui Community Toolkit的媒体元素中启用滑动手势

jk9hmnmh  于 2023-01-24  发布在  Android
关注(0)|答案(1)|浏览(154)

我会提到这不是Windows的问题。我不知道Mac或iOS。在Windows上它只是工作。
我想在Maui Community工具包的Media Player中启用滑动手势。Android内部使用的播放器是Exoplayer。exoplayer github团队已经公开表示,阻止手势是有意的。
如果我禁用媒体控件,滑动手势将起作用。如果我启用媒体控件,它将不起作用。我希望以某种方式覆盖媒体控件,并启用自定义控件以恢复手势。我还希望同时停止视频。我希望向右滑动以导航回上一页。
无法正常工作的示例代码:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
              xmlns:viewmodel="clr-namespace:NerdNewsNavigator2.ViewModel"
               xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
             x:Class="NerdNewsNavigator2.View.PlayPodcastPage"
              x:DataType="viewmodel:PlayPodcastViewModel"
             Shell.NavBarIsVisible="False"
             Title="">
    <Shell.BackButtonBehavior>
        <BackButtonBehavior IsEnabled="True" IsVisible="{OnPlatform Android=False,iOS=False, WinUI=True}">
        </BackButtonBehavior>
    </Shell.BackButtonBehavior>
    <FlexLayout>
        <FlexLayout.GestureRecognizers>
            <SwipeGestureRecognizer
                  Direction="Right" 
                Swiped="SwipedGesture" />
        </FlexLayout.GestureRecognizers>
        <toolkit:MediaPlayer
            IsVisible="True"
            ShouldAutoPlay="True"
            ShouldKeepScreenOn="True"
            ShouldShowPlaybackControls="True"
            Source="{Binding Url}">
        </toolkit:MediaPlayer>
    </FlexLayout>
</ContentPage>

这段代码在Windows上的工作原理和上面列出的完全一样。在Android上则不然。如果我将ShouldShowPlaybackControls设置为false,它在Android上确实有效。我希望有媒体控制,并且能够向右滑动。
我一直无法找到解决这个问题的方法。我不知道从哪里开始。我相信我需要覆盖exoplayer控制,因为它阻止了滑动手势。我不知道如何做到这一点。

vshtjzan

vshtjzan1#

作为一种解决办法,将MediaPlayer放入网格中。
然后可以在它上面覆盖另一个元素。
为了让控制装置仍然工作,不要盖住它们。
类似这样(我假设媒体控件位于底部,高度为50):

<Grid RowDefinitions="*,50" >
  <MediaPlayer Grid.RowSpan="2" ... />
  <BoxView Grid.Row="0" BackgroundColor="Transparent" VerticalOptions="Fill" >
    <BoxView.GestureRecognizers>
      <SwipeGestureRecognizer ... />
    </BoxView.GestureRecognizers>
  </BoxView>
</Grid>

相关问题