очень надо.
Кстати вчера нашел багу в формс, которую поправил локально, докопался по исходникам до причины.
Хотя это не совсем бага, скорее не учтенный момент.
Возможно кому пригодится - после включения режима энергосбережения на Android 8 анимации в Forms перестают работать от слова "Совсем". После выключения режима - так же не работают, помогает только перезапуск.
Дело в том, что для анимаций используется ValueAnimator, который запускается раз и постоянно работает. При включении энергосбережения ValueAnimator прекращает свою работу и более не возобновляет, необходимо самому перезапускать.
Виновник: https://github.com/xamarin/Xamarin.Forms/blob/master/Xamarin.Forms.Platform.Android/AndroidTicker.cs
Фикс:
public static void RestartAnimator() {
if (!Forms.IsInitialized) return;
var androidTickerDisposable = Ticker.Default as IDisposable;
androidTickerDisposable?.Dispose();
var t = typeof(Platform).Assembly.GetType("Xamarin.Forms.Platform.Android.AndroidTicker");
if (t == null) return;
var instance = Activator.CreateInstance(t);
Ticker.SetDefault((Ticker)instance);
}
Надо дергать этот метод при выходе из режима энергосбережения (при получении события в BroadcastReceiver).
В планах создать тикет / PR в формс.
В 3.1 частично исправили это - в режиме энегосбережения анимации должны моментально ставить финальное значение, но не проверял. А вот работу не возобновляют.
и что что исходники доступны, ты можешь глядя на исходники скомпилировать код в голове и понять как оно на самом деле там? Уверен что нет, никто не может даже сам Аллах
Обсуждают сегодня