私は大きな問題があります。私はスピードメーターの一種を実装しようとします。私はRPMのような情報を得る...ブルートゥース上の車から10-100ms毎に。今私は右の位置にrpm針を回転させたい。私はデータを取得するたびにこれを行います。ImageView StartAnimationはUIを極端に遅くします
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が約半分秒でUIの反応時間が遅くなるということです。私は3つのstartAnimationをコメントアウトすると、再びうまく動作します。 誰もがこの減速を回避する方法を知っていますか?
また、度の変化があった場合にのみアニメーションを開始しようとしましたが、ImageViewはrotateanimationの後に新しい位置を保持しません。
問題は、私は与えられたイメージの針を使用しなければならないということです。この例では、パスを使用して針をビットマップに変換し、パスの代わりにビットマップを回転させます( – 5w4rley
)。 – triggs
うーん、うまくいくかもしれません。私は試してみるよ – 5w4rley