Я хотел бы реализовать анимированную кнопку «Воспроизведение/Пауза» в своем потоковом приложении .NET MAUI.
Для этого я подумал, что могу использовать файл лотереи.
Я могу использовать SkiaSharp.Extended.UI.Maui для загрузки и анимации файла лотереи.
Однако сам элемент управления не предлагает никаких взаимодействий, таких как команды или обработчик событий OnClick.
Может быть, я слепой, но каков предпочтительный способ преобразования этого «статического» элемента управления во что-то, с чем могут взаимодействовать мои пользователи?
Если вы хотите обеспечить некоторые взаимодействия, я подумал, что вы могли бы добавить некоторые жесты на SKLottieView.
В файле .xaml
<skia:SKLottieView
x:Name = "myanimatedview"
Source = "dotnetbot.json"
HeightRequest = "300"
WidthRequest = "300"
RepeatCount = "-1">
<skia:SKLottieView.GestureRecognizers>
<TapGestureRecognizer Tapped = "TapGestureRecognizer_Tapped"/>
</skia:SKLottieView.GestureRecognizers>
</skia:SKLottieView>
В файле .cs реализуйте обработчик событий.
void TapGestureRecognizer_Tapped(System.Object sender, System.EventArgs e)
{
Console.WriteLine("hello"); // do whatever you want here
myanimatedview.IsAnimationEnabled = !myanimatedview.IsAnimationEnabled;
}
Вы можете добавить различные жесты, такие как сжатие, панорамирование, пролистывание и т. д., для взаимодействия с пользователями. Для получения дополнительной информации вы можете обратиться к жестам Xamarin.Forms.
Надеюсь, это сработает для вас.
Как мне указать путь к активам, т.е. откуда загружать изображения png, указанные в файле data.json?
Ух ты. Сумасшедший. Это в основном то, что я пробовал сегодня вечером, и меня отвлек тот факт, что моя Visual Studio не предлагала .GestureRecognizer в качестве расширения для skia:SKLottieView. Поэтому я подумал, что это представление может не происходить из чего-то, что допускает это расширение. Затем я поместил StackLayout в качестве оболочки вокруг SKLottieView и расширил его с помощью Recognizer, и это сработало. Однако теперь я попробовал ваше решение, и оно волшебным образом работает. Так что спасибо!!