LottieUWP embedded into Xamarin.Forms
up vote
0
down vote
favorite
I made a custom renderer for LottieUWP
[assembly: ExportRenderer(typeof(LottieView), typeof(LottieViewRenderer))]
namespace Gorilla.Forms.UWP.Source.Renderer.Lottie
{
public class LottieViewRenderer : ViewRenderer<LottieView, LottieAnimationView>
{
private LottieAnimationView AnimationView;
protected override void OnElementChanged(ElementChangedEventArgs<LottieView> e)
{
base.OnElementChanged(e);
if (Control == null)
{
if (e.NewElement == null) return;
AnimationView = new LottieAnimationView()
{
Name = e.NewElement.AnimationPath,
FileName = e.NewElement.AnimationPath,
AutoPlay = true,
RepeatCount = -1
};
SetNativeControl(AnimationView);
}
}
}
}
This works, but sometimes when hovering or waiting some seconds, I get an error:
WinRT information: Attempting to close a CanvasActiveLayer that is not top of the stack. The most recently created layer must be closed first.
at System.Runtime.InteropServices.WindowsRuntime.IClosable.Close()
at System.Runtime.InteropServices.WindowsRuntime.IClosableToIDisposableAdapter.Dispose()
at LottieUWP.LottieDrawable.Draw(CanvasDevice device, BitmapCanvas bitmapCanvas, CompositionLayer compositionLayer, Rect bounds, Single scale, Byte alpha, Matrix3X3 matrix, Double width, Double height, CanvasDrawingSession canvasDrawingSession)
at LottieUWP.LottieDrawable.CanvasControlOnDraw(ICanvasAnimatedControl canvasControl, CanvasAnimatedDrawEventArgs args)
at Windows.ApplicationModel.Core.UnhandledError.Propagate()
at Microsoft.AppCenter.Utils.ApplicationLifecycleHelper.<.ctor>b__17_1(Object sender, UnhandledErrorDetectedEventArgs eventArgs)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at Microsoft.AppCenter.Utils.ApplicationLifecycleHelper.<.ctor>b__17_1(Object sender, UnhandledErrorDetectedEventArgs eventArgs)
This seems to be a bug inside LottieUWP or is my implementation incorrect?
c# xamarin xamarin.forms xamarin.uwp lottie
add a comment |
up vote
0
down vote
favorite
I made a custom renderer for LottieUWP
[assembly: ExportRenderer(typeof(LottieView), typeof(LottieViewRenderer))]
namespace Gorilla.Forms.UWP.Source.Renderer.Lottie
{
public class LottieViewRenderer : ViewRenderer<LottieView, LottieAnimationView>
{
private LottieAnimationView AnimationView;
protected override void OnElementChanged(ElementChangedEventArgs<LottieView> e)
{
base.OnElementChanged(e);
if (Control == null)
{
if (e.NewElement == null) return;
AnimationView = new LottieAnimationView()
{
Name = e.NewElement.AnimationPath,
FileName = e.NewElement.AnimationPath,
AutoPlay = true,
RepeatCount = -1
};
SetNativeControl(AnimationView);
}
}
}
}
This works, but sometimes when hovering or waiting some seconds, I get an error:
WinRT information: Attempting to close a CanvasActiveLayer that is not top of the stack. The most recently created layer must be closed first.
at System.Runtime.InteropServices.WindowsRuntime.IClosable.Close()
at System.Runtime.InteropServices.WindowsRuntime.IClosableToIDisposableAdapter.Dispose()
at LottieUWP.LottieDrawable.Draw(CanvasDevice device, BitmapCanvas bitmapCanvas, CompositionLayer compositionLayer, Rect bounds, Single scale, Byte alpha, Matrix3X3 matrix, Double width, Double height, CanvasDrawingSession canvasDrawingSession)
at LottieUWP.LottieDrawable.CanvasControlOnDraw(ICanvasAnimatedControl canvasControl, CanvasAnimatedDrawEventArgs args)
at Windows.ApplicationModel.Core.UnhandledError.Propagate()
at Microsoft.AppCenter.Utils.ApplicationLifecycleHelper.<.ctor>b__17_1(Object sender, UnhandledErrorDetectedEventArgs eventArgs)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at Microsoft.AppCenter.Utils.ApplicationLifecycleHelper.<.ctor>b__17_1(Object sender, UnhandledErrorDetectedEventArgs eventArgs)
This seems to be a bug inside LottieUWP or is my implementation incorrect?
c# xamarin xamarin.forms xamarin.uwp lottie
It might help to see your LottieView and the AnimationPath. I assume this is a json string? IOW, can you supply a MCVE (minimal, complete, verifiable example? stackoverflow.com/help/mcve
– jgoldberger
Nov 21 at 21:39
From the error info,CanvasActiveLayer
is not top of the stack, and it will be released, then it cause thecanvasControl
parameter empty withinCanvasControlOnDraw
method. So, you need checkLottieView
class and how you use it.
– Nico Zhu - MSFT
Nov 22 at 6:37
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I made a custom renderer for LottieUWP
[assembly: ExportRenderer(typeof(LottieView), typeof(LottieViewRenderer))]
namespace Gorilla.Forms.UWP.Source.Renderer.Lottie
{
public class LottieViewRenderer : ViewRenderer<LottieView, LottieAnimationView>
{
private LottieAnimationView AnimationView;
protected override void OnElementChanged(ElementChangedEventArgs<LottieView> e)
{
base.OnElementChanged(e);
if (Control == null)
{
if (e.NewElement == null) return;
AnimationView = new LottieAnimationView()
{
Name = e.NewElement.AnimationPath,
FileName = e.NewElement.AnimationPath,
AutoPlay = true,
RepeatCount = -1
};
SetNativeControl(AnimationView);
}
}
}
}
This works, but sometimes when hovering or waiting some seconds, I get an error:
WinRT information: Attempting to close a CanvasActiveLayer that is not top of the stack. The most recently created layer must be closed first.
at System.Runtime.InteropServices.WindowsRuntime.IClosable.Close()
at System.Runtime.InteropServices.WindowsRuntime.IClosableToIDisposableAdapter.Dispose()
at LottieUWP.LottieDrawable.Draw(CanvasDevice device, BitmapCanvas bitmapCanvas, CompositionLayer compositionLayer, Rect bounds, Single scale, Byte alpha, Matrix3X3 matrix, Double width, Double height, CanvasDrawingSession canvasDrawingSession)
at LottieUWP.LottieDrawable.CanvasControlOnDraw(ICanvasAnimatedControl canvasControl, CanvasAnimatedDrawEventArgs args)
at Windows.ApplicationModel.Core.UnhandledError.Propagate()
at Microsoft.AppCenter.Utils.ApplicationLifecycleHelper.<.ctor>b__17_1(Object sender, UnhandledErrorDetectedEventArgs eventArgs)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at Microsoft.AppCenter.Utils.ApplicationLifecycleHelper.<.ctor>b__17_1(Object sender, UnhandledErrorDetectedEventArgs eventArgs)
This seems to be a bug inside LottieUWP or is my implementation incorrect?
c# xamarin xamarin.forms xamarin.uwp lottie
I made a custom renderer for LottieUWP
[assembly: ExportRenderer(typeof(LottieView), typeof(LottieViewRenderer))]
namespace Gorilla.Forms.UWP.Source.Renderer.Lottie
{
public class LottieViewRenderer : ViewRenderer<LottieView, LottieAnimationView>
{
private LottieAnimationView AnimationView;
protected override void OnElementChanged(ElementChangedEventArgs<LottieView> e)
{
base.OnElementChanged(e);
if (Control == null)
{
if (e.NewElement == null) return;
AnimationView = new LottieAnimationView()
{
Name = e.NewElement.AnimationPath,
FileName = e.NewElement.AnimationPath,
AutoPlay = true,
RepeatCount = -1
};
SetNativeControl(AnimationView);
}
}
}
}
This works, but sometimes when hovering or waiting some seconds, I get an error:
WinRT information: Attempting to close a CanvasActiveLayer that is not top of the stack. The most recently created layer must be closed first.
at System.Runtime.InteropServices.WindowsRuntime.IClosable.Close()
at System.Runtime.InteropServices.WindowsRuntime.IClosableToIDisposableAdapter.Dispose()
at LottieUWP.LottieDrawable.Draw(CanvasDevice device, BitmapCanvas bitmapCanvas, CompositionLayer compositionLayer, Rect bounds, Single scale, Byte alpha, Matrix3X3 matrix, Double width, Double height, CanvasDrawingSession canvasDrawingSession)
at LottieUWP.LottieDrawable.CanvasControlOnDraw(ICanvasAnimatedControl canvasControl, CanvasAnimatedDrawEventArgs args)
at Windows.ApplicationModel.Core.UnhandledError.Propagate()
at Microsoft.AppCenter.Utils.ApplicationLifecycleHelper.<.ctor>b__17_1(Object sender, UnhandledErrorDetectedEventArgs eventArgs)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at Microsoft.AppCenter.Utils.ApplicationLifecycleHelper.<.ctor>b__17_1(Object sender, UnhandledErrorDetectedEventArgs eventArgs)
This seems to be a bug inside LottieUWP or is my implementation incorrect?
c# xamarin xamarin.forms xamarin.uwp lottie
c# xamarin xamarin.forms xamarin.uwp lottie
edited Nov 22 at 3:23
York Shen - MSFT
6,5801324
6,5801324
asked Nov 21 at 12:29
Daniel DirtyNative Martin
486314
486314
It might help to see your LottieView and the AnimationPath. I assume this is a json string? IOW, can you supply a MCVE (minimal, complete, verifiable example? stackoverflow.com/help/mcve
– jgoldberger
Nov 21 at 21:39
From the error info,CanvasActiveLayer
is not top of the stack, and it will be released, then it cause thecanvasControl
parameter empty withinCanvasControlOnDraw
method. So, you need checkLottieView
class and how you use it.
– Nico Zhu - MSFT
Nov 22 at 6:37
add a comment |
It might help to see your LottieView and the AnimationPath. I assume this is a json string? IOW, can you supply a MCVE (minimal, complete, verifiable example? stackoverflow.com/help/mcve
– jgoldberger
Nov 21 at 21:39
From the error info,CanvasActiveLayer
is not top of the stack, and it will be released, then it cause thecanvasControl
parameter empty withinCanvasControlOnDraw
method. So, you need checkLottieView
class and how you use it.
– Nico Zhu - MSFT
Nov 22 at 6:37
It might help to see your LottieView and the AnimationPath. I assume this is a json string? IOW, can you supply a MCVE (minimal, complete, verifiable example? stackoverflow.com/help/mcve
– jgoldberger
Nov 21 at 21:39
It might help to see your LottieView and the AnimationPath. I assume this is a json string? IOW, can you supply a MCVE (minimal, complete, verifiable example? stackoverflow.com/help/mcve
– jgoldberger
Nov 21 at 21:39
From the error info,
CanvasActiveLayer
is not top of the stack, and it will be released, then it cause the canvasControl
parameter empty within CanvasControlOnDraw
method. So, you need check LottieView
class and how you use it.– Nico Zhu - MSFT
Nov 22 at 6:37
From the error info,
CanvasActiveLayer
is not top of the stack, and it will be released, then it cause the canvasControl
parameter empty within CanvasControlOnDraw
method. So, you need check LottieView
class and how you use it.– Nico Zhu - MSFT
Nov 22 at 6:37
add a comment |
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53412067%2flottieuwp-embedded-into-xamarin-forms%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
It might help to see your LottieView and the AnimationPath. I assume this is a json string? IOW, can you supply a MCVE (minimal, complete, verifiable example? stackoverflow.com/help/mcve
– jgoldberger
Nov 21 at 21:39
From the error info,
CanvasActiveLayer
is not top of the stack, and it will be released, then it cause thecanvasControl
parameter empty withinCanvasControlOnDraw
method. So, you need checkLottieView
class and how you use it.– Nico Zhu - MSFT
Nov 22 at 6:37