我有一个实现SensorEventListener
的类,每次执行方法onSensorChanged(SensorEvent event)
时,都会启动一个新的RotateAnimation(它是一个指南针)。
在方法中,我为旋转动画创建AnimationListener()
,在侦听器中,每次调用onAnimationStart()
时,我都会启动一个闪烁的动画。
这里有两个问题:
onAnimationStart()
然后执行闪烁),因此闪烁的速度非常快。我想知道如何在每次传感器更换时传感器线程再次启动时如何保持闪烁。
@Override
public void onSensorChanged(SensorEvent event) {
float degree = Math.round(event.values[0]);
rotate = new RotateAnimation(
currentDegree,
-degree,
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF,
0.5f);
rotate.setDuration(210);
rotate.setFillAfter(true);
compass.startAnimation(rotate);
rotate.setAnimationListener(new Animation.AnimationListener() {
public void onAnimationStart(Animation animation) {
// Only enters one time so the blink starts
// but then the blink stop when a new sensor thread is created
if (count < 1){
blink ();
count++;
}
}
});
}
public void blink (){
blink = new AlphaAnimation(1, 0);
blink.setDuration(400); // duration - half a second
blink.setRepeatCount(Animation.INFINITE);
blink.setRepeatMode(Animation.REVERSE);
compass.startAnimation(blink);
}