/// <summary> /// Asynchronously loads a composition from a raw json object. This is useful for animations loaded from the network. /// </summary> public static Task <LottieComposition> FromJsonAsync(Resources res, JSONObject json, CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) { return(Task.FromCanceled <LottieComposition>(cancellationToken)); } var tcs = new TaskCompletionSource <LottieComposition>(); var cancelable = LottieComposition.FromJson(res, json, (composition) => { cancellationToken.ThrowIfCancellationRequested(); tcs.SetResult(composition); }); cancellationToken.Register(() => { if (!tcs.Task.IsCompleted) { cancelable.Cancel(); tcs.TrySetCanceled(cancellationToken); } }); return(tcs.Task); }
/// <summary> /// Asynchronously loads a composition from a raw json object. This is useful for animations loaded from the network. /// </summary> public static LottieComposition.ICancellable FromJson(Android.Content.Res.Resources res, JSONObject json, Action <LottieComposition> onLoaded) { return(LottieComposition.FromJson(res, json, new ActionCompositionLoaded(onLoaded))); }