Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
 /// <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)));
 }