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?










share|improve this question
























  • 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















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?










share|improve this question
























  • 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













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?










share|improve this question















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








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 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


















  • 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
















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

















active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














 

draft saved


draft discarded


















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






























active

oldest

votes













active

oldest

votes









active

oldest

votes






active

oldest

votes
















 

draft saved


draft discarded



















































 


draft saved


draft discarded














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





















































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







Popular posts from this blog

A CLEAN and SIMPLE way to add appendices to Table of Contents and bookmarks

Calculate evaluation metrics using cross_val_predict sklearn

Insert data from modal to MySQL (multiple modal on website)