/// <summary> /// Hides the loading spinner. /// </summary> public void HideLoading() { LoadingSpinnerView.Stop(() => { LoadingSpinnerView.Visibility = ViewStates.Invisible; }); }
/// <summary> /// Called when the player's state has changed. /// </summary> /// <param name="playWhenReady">if set to <c>true</c> [play when ready].</param> /// <param name="playbackState">State of the playback.</param> void IPlayerEventListener.OnPlayerStateChanged(bool playWhenReady, int playbackState) { // // If the video is ready, hide the spinner and start the video. // if (playbackState == Player.StateReady && AutoPlay) { AutoPlay = false; LoadingSpinnerView.Stop(() => { LoadingSpinnerView.Visibility = ViewStates.Invisible; VideoPlayer.PlayWhenReady = true; PlayerView.ControllerAutoShow = true; }); } // // Playback has ended naturally, close this video player. // if (playbackState == Player.StateEnded) { CrexActivity.MainActivity.PopTopFragment(); } }
/// <summary> /// Shows the loading overlay. /// </summary> protected void ShowLoading() { OverlayView.Hidden = false; OverlayView.FocusEnabled = true; LoadingSpinnerView.Start(); SetNeedsFocusUpdate(); }
/// <summary> /// Hides the loading overlay. /// </summary> protected void HideLoading() { LoadingSpinnerView.Stop(() => { OverlayView.Hidden = true; }); OverlayView.FocusEnabled = false; SetNeedsFocusUpdate(); }
/// <summary> /// The view has loaded and is ready for final initialization. /// </summary> public override void ViewDidLoad() { base.ViewDidLoad(); OverlayView = new FocusView { Frame = new CGRect(0, 0, 1920, 1080), Hidden = true, FocusEnabled = false }; View.AddSubview(OverlayView); LoadingSpinnerView = new LoadingSpinnerView(new CGRect(880, 460, 160, 160)); OverlayView.AddSubview(LoadingSpinnerView); }
/// <summary> /// Plays the video contained in the URL at the given starting position. /// </summary> /// <param name="url">The URL.</param> /// <param name="position">The position.</param> private void PlayVideo(string url, long?position) { LoadingSpinnerView.Visibility = ViewStates.Visible; LoadingSpinnerView.Start(); // // Prepare the standard HTTP information for the source. // var mediaUri = global::Android.Net.Uri.Parse(url); var userAgent = Util.GetUserAgent(Activity, "Crex"); var defaultHttpDataSourceFactory = new DefaultHttpDataSourceFactory(userAgent); var defaultDataSourceFactory = new DefaultDataSourceFactory(Activity, null, defaultHttpDataSourceFactory); IMediaSource source; // // Determine if this is an HLS or MP4 stream. // if (mediaUri.Path.EndsWith(".m3u8", StringComparison.InvariantCultureIgnoreCase) || mediaUri.Path.EndsWith("/hsl", StringComparison.InvariantCultureIgnoreCase)) { using (var factory = new HlsMediaSource.Factory(defaultDataSourceFactory)) { source = factory.CreateMediaSource(mediaUri); } } else { using (var factory = new ExtractorMediaSource.Factory(defaultDataSourceFactory)) { source = factory.CreateMediaSource(mediaUri); } } // // Create the player and get it ready for playback. // AutoPlay = true; VideoPlayer = ExoPlayerFactory.NewSimpleInstance(Activity, new DefaultTrackSelector()); VideoPlayer.AddListener(this); PlayerView.Player = VideoPlayer; if (position.HasValue) { VideoPlayer.SeekTo(position.Value); } VideoPlayer.Prepare(source, !position.HasValue, false); }
/// <summary> /// Shows the loading spinner. /// </summary> public void ShowLoading() { LoadingSpinnerView.Start(); LoadingSpinnerView.Visibility = ViewStates.Visible; LoadingSpinnerView.RequestFocus(); }