Android: собственноручная анимация вращения для спидометра - производительность? - PullRequest
0 голосов
/ 25 марта 2012

Я на шаг впереди со своим спидометром, но я не настолько доволен своим «решением».Я создал свой собственный вид для отображения моего спидометра.Вид расширяет ImageView и отображает спидометр (без стрелки).Когда скорость будет обновлена, стрелка повернется на текущий угол, и вид станет недействительным.Теперь моя проблема в том, что игла как бы «прыгает» (пе от 50 км / ч до 100 км / ч).Теперь я хотел бы нарисовать плавную анимацию поверх этого.RotationAnimation вращает весь мой спидометр, поэтому я решил написать новый поток, который анимирует стрелку с 30FPS и, следовательно, вызывает invalidate () 30 раз в секунду.Это работает, но у меня всегда есть этот дополнительный поток в фоновом режиме.Когда у меня позже будет больше инструментов, чем спидометра, будет намного больше ниток.Теперь мой первый вопрос: насколько эффективным является мое решение?Сколько потоков можно обработать в приложении?

Моя вторая идея - использовать SurfaceView для иглы, где я мог бы использовать RotationAnimation.Но я не уверен, возможно ли показать текущую скорость на цифровом дисплее, пока стрелка вращается.(pe: стрелка анимируется с 50 км / ч до 100 км / ч, поэтому важно, чтобы скорость на цифровом дисплее всегда была одинаковой, стрелка указывала на, а не на то, что она всегда показывает 50, пока стрелка не достигнет100, а затем цифровой дисплей мгновенно переходит на 100).

Я надеюсь, что вы могли бы помочь мне с некоторыми полезными советами.Помощь будет очень признательна

1 Ответ

0 голосов
/ 25 марта 2012

вы можете попытаться реализовать шаблон Observer / Observable в сочетании с презентатором.Ваша логика расчета "текущей скорости" обновит объект "модель представления", который реализует наблюдаемый шаблон и зарегистрирован на презентаторе (наблюдателе).теперь с каждым обновлением докладчик уведомляется, и он делает недействительным / перерисовывает ваше представление.Сверху вы можете добавить «перезарядку» для докладчика, которая предотвращает распространение обновлений чаще, чем x раз в секунду.

, которая масштабируется до любого количества сигналов и передает всю логику через ваш класс докладчика.

...