Я нашел несколько ресурсов по настройке частоты кадров в приложении Android:
- https ://developer.android.com/media/optimize/ Performance/frame-rate
- https://developer.android.com/reference ... reographer
- https://android-developers.googleblog.c ... droid.html
Теоретически, насколько я понимаю, можно установить высокую частоту кадров окна во время таких пользовательских анимаций за пределами стандартной системы Android, а затем синхронизировать обновления дисплея с обновлениями хореографа.
Затем, когда анимация будет завершена, можно можно снова снизить частоту кадров.
Это лучше, чем просто запускать обновления на свободно работающем таймере, который не синхронизируется таким образом.
Функции .NET Maui?
Однако я не понимаю, есть ли какой-либо способ сделать это в .NET Maui, поскольку я не вижу способа получить доступ к необходимым методам.< /p>
Код: Выделить всё
ANativeWindow_setFrameRate()Код: Выделить всё
Display.getSupportedModes()Код: Выделить всё
DisplayManager.registerDisplayListener()Код: Выделить всё
AChoreographer_registerRefreshRateCallback()Код: Выделить всё
WindowManager.LayoutParams.preferredDisplayModeIdКод: Выделить всё
Choreographer#postFrameCallback
[*]https://learn.microsoft.com/en-us/dotne ... freshrates
[*]https://learn.microsoft.com/en-us/dotne ... droid-34.0
Но я не уверен, как мне это использовать.
Конечная цель
Моей целью будет иметь простую функцию для установки желаемой частоты кадров (на основе существующих режимов экрана или произвольного числа — подойдет и то, и другое, режимы экрана могут быть лучшими, поскольку это старый метод API) и запускать функцию при каждом последующем обновлении Choreographer .
Возможно ли это? Можете ли вы предоставить какой-либо код или псевдокод .NET Maui, который будет работать?
Альтернативный подход?
Если это неработоспособно, альтернативой будет создать фиктивную анимацию Android, которая ничего не делает, но работает до тех пор, пока нужные мне пользовательские анимации (запускаются и прекращаются по моей команде), чтобы дать Android команду увеличить частоту кадров. Затем я мог бы синхронизировать с ним свои обновления, если это возможно, через View#postOnAnimation.
Спасибо за любую помощь.
Подробнее здесь: https://stackoverflow.com/questions/787 ... in-android
Мобильная версия