我有一个大问题。我尝试实现一种速度表。我得到像RPM这样的信息...每隔10-100毫秒从汽车通过蓝牙。现在我想将转速针旋转到正确的位置。我每次获得数据时都会这样做。
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不会保持新位置。
plz help
答案 0 :(得分:0)
我无法直接回答您的问题,但此链接可能有所帮助
http://mindtherobot.com/blog/272/android-custom-ui-making-a-vintage-thermometer/
它使用绘制的自定义UI组件并使用画布而不是动画旋转针。