У меня есть классный инструмент Drawable.Мне нужно периодически перерисовывать его, чтобы получить эффект "моргания".Я использую timer.schedule для планирования invalidateSelf (), но ничего не произошло.
private class DrawableImpl extends Drawable {
private boolean blinkFlag = false;
private Timer timer = new Timer(false);
private int maxFlashCount = 21;
private int intervalBetweenFlashesInMs = 100;
private int currentFlashNumber = 0;
@Override
public void draw(Canvas canvas) {
Log.i(TAG, "draw");
/*draw stable part*/
if (blinkFlag ) {
Log.i(TAG, "blink");
/*draw bliking part*/
}
blinkFlag = !blinkFlag;
final DrawableImpl drawableImpl = this;
if (currentFlashNumber < maxFlashCount) {
Log.i(TAG, "schedule");
timer.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.i(TAG, "run from back");
drawableImpl.invalidateSelf();
}
});
}
}, intervalBetweenFlashesInMs);
currentFlashNumber++;
}
}
}
В журнале что-то вроде этого
02-08 23: 07: 44.791: INFO / (258): draw
02-08 23: 07: 44,791: INFO / (258): мигание
02-08 23: 07: 44,791: INFO / (258): расписание
02-08 23: 07: 45.011: INFO /(258): бег назад:
02-08 23: 07: 45.021: ИНФО / (258): ничья
02-08 23: 07: 45.021: ИНФО / (258): расписание
02-08 23: 07: 45.171: INFO / (258): бег назад)
02-08 23: 07: 45.171: INFO / (258): ничья
02-08 23: 07: 45.171: INFO / (258): мигает
02-08 23: 07: 45.171: INFO / (258): расписание
02-08 23: 07: 45.331: INFO / (258): запуск назад
Почему это не сработало?Должен ли я использовать другие методы для этого?