Чтобы исправить это и интегрировать циклы в Xamarin Forms (при условии, что вы следовали приведенному выше руководству):
Добавьте приведенный ниже код в конец функции OnElementChanged ()
videoView.SetOnPreparedListener(new VideoLoop(videoView));
Создайте класс videol oop (я также хотел l oop)
using Android.Graphics;
using Android.Media;
using Android.Views;
using Android.Widget;
using YOURPROJECTHERE.Droid.FormsVideoLibrary;
using Java.Lang;
using System.Threading.Tasks;
namespace FormsVideoLibrary.Droid
{
public class VideoLoop : Java.Lang.Object, Android.Media.MediaPlayer.IOnPreparedListener
{
VideoView Video;
public VideoLoop(VideoView video)
{
Video = video;
Video.SetBackgroundColor(Android.Graphics.Color.White);
}
public void OnPrepared(MediaPlayer mp)
{
mp.SetOnInfoListener(new OnInfo(Video));
//Remove or comment the line below if you don't want to loop
mp.Looping = true;
mp.Start();
}
}
}
Теперь мы делаем цвет фона прозрачным при нажатии на первый кадр (не в OnPrepared потому что он все еще буферизируется в этот момент):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.Media;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
namespace YOURPOJECTNAMESPACE.Droid.FormsVideoLibrary
{
class OnInfo : Java.Lang.Object, Android.Media.MediaPlayer.IOnInfoListener
{
VideoView Video;
public OnInfo(VideoView video)
{
Video = video;
}
bool MediaPlayer.IOnInfoListener.OnInfo(MediaPlayer mp, MediaInfo what, int extra)
{
if (what == MediaInfo.VideoRenderingStart)
{
// video started; hide the placeholder.
Video.SetBackgroundColor(Android.Graphics.Color.Transparent);
return true;
}
return false;
}
}
}
Я также добавил ниже в функцию OnStopRequested в классе VideoRenderer.
void OnStopRequested(object sender, EventArgs args)
{
videoView.StopPlayback();
videoView.SetBackgroundColor(Android.Graphics.Color.White);
}
И затем, наконец, вернулся в общие Проект xaml.cs добавить ниже на каждой странице с видео:
protected override void OnAppearing()
{
xNAMEOFYOURVIDEO.Play();
xNAMEOFYOURVIDEO.Source = new ResourceVideoSource
{
Path = "yourfile.mp4"
};
}
protected override void OnDisappearing()
{
xNAMEOFYOURVIDEO.Stop();
}