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);
}
}
}
}


And here is the LottieView



public class LottieView : View
{
public static readonly BindableProperty AnimationPathProperty = BindableProperty.Create(
propertyName: nameof(AnimationPath),
returnType: typeof(string),
declaringType: typeof(LottieView));

public string AnimationPath
{
get => (string)GetValue(AnimationPathProperty);
set => SetValue(AnimationPathProperty, value);
}
}


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










  • LottieView is my selfmade class and there is just a Property and a BindableProperty implemented
    – Daniel DirtyNative Martin
    Nov 26 at 8:44















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);
}
}
}
}


And here is the LottieView



public class LottieView : View
{
public static readonly BindableProperty AnimationPathProperty = BindableProperty.Create(
propertyName: nameof(AnimationPath),
returnType: typeof(string),
declaringType: typeof(LottieView));

public string AnimationPath
{
get => (string)GetValue(AnimationPathProperty);
set => SetValue(AnimationPathProperty, value);
}
}


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










  • LottieView is my selfmade class and there is just a Property and a BindableProperty implemented
    – Daniel DirtyNative Martin
    Nov 26 at 8:44













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);
}
}
}
}


And here is the LottieView



public class LottieView : View
{
public static readonly BindableProperty AnimationPathProperty = BindableProperty.Create(
propertyName: nameof(AnimationPath),
returnType: typeof(string),
declaringType: typeof(LottieView));

public string AnimationPath
{
get => (string)GetValue(AnimationPathProperty);
set => SetValue(AnimationPathProperty, value);
}
}


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);
}
}
}
}


And here is the LottieView



public class LottieView : View
{
public static readonly BindableProperty AnimationPathProperty = BindableProperty.Create(
propertyName: nameof(AnimationPath),
returnType: typeof(string),
declaringType: typeof(LottieView));

public string AnimationPath
{
get => (string)GetValue(AnimationPathProperty);
set => SetValue(AnimationPathProperty, value);
}
}


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 26 at 8:43

























asked Nov 21 at 12:29









Daniel DirtyNative Martin

488315




488315












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










  • LottieView is my selfmade class and there is just a Property and a BindableProperty implemented
    – Daniel DirtyNative Martin
    Nov 26 at 8:44


















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










  • LottieView is my selfmade class and there is just a Property and a BindableProperty implemented
    – Daniel DirtyNative Martin
    Nov 26 at 8:44
















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












LottieView is my selfmade class and there is just a Property and a BindableProperty implemented
– Daniel DirtyNative Martin
Nov 26 at 8:44




LottieView is my selfmade class and there is just a Property and a BindableProperty implemented
– Daniel DirtyNative Martin
Nov 26 at 8:44

















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




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.





Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


Please pay close attention to the following guidance:


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




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

Different font size/position of beamer's navigation symbols template's content depending on regular/plain...

Berounka

I want to find a topological embedding $f : X rightarrow Y$ and $g: Y rightarrow X$, yet $X$ is not...