I am basically replicating NavigationPage, but only using Views. Incoming views are added to the Children, but with TranslationX set just outside the right side (Width + 1), then I use Device.BeginInvokeOnMainThread for TranslateTo. I used Device.BeginInvokeOnMainThread to yield the UI thread so that any other processing and/or layouting can run before the animation. This is not always effective, because for other views, it seems that internal processing/layouting is not finished yet when the animation starts, resulting to frame-skips, and for complex views, complete animation skip. I already used the LayoutChanged event (99.99% of the incoming views are Layouts) with TaskCompletionSource<> so that I can detect if the layouts are finished before the animation is started, but LayoutChanged is triggered almost immediately 99.99% of the time after adding the view to Children. How can I implement it so that absolutely all "preparation codes", both on the Xamarin layer and native layer are finished before the animation starts?
Thanks!