ImageView StartAnimation очень сильно замедляет интерфейс - PullRequest
1 голос
/ 26 марта 2012

У меня большая проблема.Я пытаюсь реализовать вид спидометра.я получаю информацию, как RPM ... каждые 10-100 мс от автомобиля через Bluetooth.Теперь я хочу повернуть стрелку в нужное положение.я делаю это каждый раз, когда получаю данные.

ivNadel.startAnimation(RpmAnim);
ivBoost.startAnimation(BoostAnim);
ivLoad.startAnimation(LoadAnim);

Анимации все реализованы так:

//rotate Tachonadel
Rpmcurrentdegree=Rpmcurrentdegree+Rpmdegree;
Rpmdegree=((rpms-lastrpm)*RPMtoDegree);
if(Rpmdegree!=0)
{
    RpmAnim=new RotateAnimation((float)Rpmcurrentdegree, (float)Rpmdegree, ivNadel.getWidth()/2, ivNadel.getHeight()/2);
    RpmAnim.setInterpolator(new LinearInterpolator());
    RpmAnim.setFillEnabled(true);
    RpmAnim.setFillAfter(true);
}

проблема в том, что startAnimations замедляют время реакции пользовательского интерфейсаоколо половины секунды.когда я комментирую 3 startAnimation out, он снова работает нормально.Так кто-нибудь знает, как обойти это замедление?

Я также пытался запустить анимацию, только если произошли изменения в градусах, но тогда ImageView не удерживает свою новую позицию после rotateanimation.

PLZ Help

1 Ответ

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

Я не могу ответить на ваш вопрос напрямую, но эта ссылка может помочь

http://mindtherobot.com/blog/272/android-custom-ui-making-a-vintage-thermometer/

Он использует нарисованный пользовательский интерфейс и вращает иглу с холстом вместо анимации.

...