/// <summary>
        /// On the element changed.
        /// </summary>
        /// <param name="e">E.</param>
        protected override void OnElementChanged(global::Xamarin.Forms.Platform.MacOS.ElementChangedEventArgs <global::Xamarin.Forms.View> e)
        {
            base.OnElementChanged(e);
            if (e.NewElement == null)
            {
                return;
            }
            _callView = e.NewElement as AgoraVideoView;
            var width  = e.NewElement.Width;
            var height = e.NewElement.Height;

            _layout       = new NSView(new CoreGraphics.CGRect(0, 0, (nfloat)Element.Width, (nfloat)Element.Height)); //(new RectangleF(0, 0, width, height)) { Hidden = false };
            _videoService = Xamarin.Agora.Full.Forms.AgoraService.Current as AgoraServiceImplementation;
            SetNativeControl(_layout);
            _videoService.SetupView(UpdatedHolder());
        }
 /// <summary>
 /// On the element changed.
 /// </summary>
 /// <param name="e">E.</param>
 protected override void OnElementChanged(global::Xamarin.Forms.Platform.Android.ElementChangedEventArgs <global::Xamarin.Forms.View> e)
 {
     base.OnElementChanged(e);
     if (e.NewElement == null)
     {
         return;
     }
     global::Android.App.Application.SynchronizationContext.Post(_ =>
     {
         _callView = e.NewElement as AgoraVideoView;
         _layout   = new FrameLayout(Context)
         {
             LayoutParameters = new FrameLayout.LayoutParams(LayoutParams.MatchParent, LayoutParams.MatchParent)
         };
         _videoService = Xamarin.Agora.Full.Forms.AgoraService.Current as AgoraServiceImplementation;
         SetNativeControl(_layout);
         _videoService.SetupView(UpdatedHolder());
     }, null);
 }
 public AgoraVideoViewHolder(AgoraVideoView view, T nativeView)
 {
     VideoView  = view;
     NativeView = nativeView;
 }