У меня есть страница форм Xamarin, которая содержит абсолютный макет, обертывающий все. Внутри этого у меня есть контент, который заполняет все пространство и имеет левый отступ 80, а затем у меня есть левая боковая панель навигации шириной 80, расположенная поверх основного контента:
Я хочу своего рода модифицированную анимацию "push", что означает выполнение двух вещей:
- Увеличьте ширину левой навигации на 100 (до 180)
- TranslateX основной контент на 100
(Обратите внимание, что использовать TranslateTo() было бы очень просто, но левая навигация должна увеличиваться по ширине, а не сдвигаться вправо, и нет метода WidthTo()).
Я могу сделать № 1 сам по себе очень хорошо.
Я могу сделать № 2 сам по себе очень хорошо.
Но я не могу заставить их обоих анимироваться. Если я сначала запускаю анимацию левой навигации (через .Commit()), анимируется только основной контент. Если я сначала запускаю анимацию основного контента, ни одна из них не анимируется. Странный! Что здесь происходит?
Вот основной код, который я использую:
var leftNavAnimation = new Animation(
callback: x => leftNav.WidthRequest = x,
start: 80,
end: 180,
easing: Easing.Linear
);
var mainContentAnimation = new Animation(
callback: x => mainContent.TranslationX = x,
start: 0,
end: 100,
easing: Easing.Linear
);
leftNavAnimation.Commit(this, "leftNavAnimationName", length: animationLength);
pageContentAnimation.Commit(this, "mainContentAnimationName", length: animationLength);