private async Task AnimateTabButton() { double sourceScale = TabButton.Scale; Color sourceColor = TabButton.ButtonBackgroundColor; Color targetColor = _currentAppTheme == AppTheme.Light ? ResourcesHelper.GetResourceColor("DarkSurface") : Color.White; await TabButton.ScaleTo(3); await TabButton.ScaleTo(sourceScale); TabButton.IconImageSource = null; var bigScaleTask = TabButton.ScaleTo(30, length: 500); var colorChangeTask = TabButton.ColorTo( sourceColor, targetColor, callback: c => TabButton.ButtonBackgroundColor = c, length: 500); await Task.WhenAll(bigScaleTask, colorChangeTask); if (_currentAppTheme == AppTheme.AcrylicBlur) { _currentAppTheme = AppTheme.Light; } else { _currentAppTheme += 1; } ApplyTheme(); var reverseBigScaleTask = TabButton.ScaleTo(sourceScale, length: 500); var reverseColorChangeTask = TabButton.ColorTo( targetColor, sourceColor, c => TabButton.ButtonBackgroundColor = c, length: 500); await Task.WhenAll(reverseBigScaleTask, reverseColorChangeTask); TabButton.IconImageSource = "theme_96.png"; }