(1/3) означает целочисленное деление, поэтому вы не можете получить десятичное значение из этого деления. Для решения этой проблемы используйте:
public static void main(String[] args) {
double g = 1.0 / 3;
System.out.printf("%.2f", g);
}
Ваш Drawable может реализовать интерфейс AnimatorUpdateListener :
Разработчики этого интерфейса могут добавлять себя в качестве прослушивателей обновлений в экземпляр ValueAnimator для получения обратных вызовов для каждого кадра анимации, после того, как значения текущего кадра были рассчитаны для этого ValueAnimator
Затем переопределите метод onAnimationUpdate () для обработки каждого кадра анимации.
public void onAnimationUpdate(ValueAnimator animator) { float radius = (float)animator.getAnimatedValue(); // Clear canvas and draw next frame invalidateSelf(); }
И затем запустите анимацию в вашем методе
init()
:public void init() { ... ValueAnimator valueAnimator = ValueAnimator.ofFloat(START_RADIUS, END_RADIUS); valueAnimator.setDuration(DURATION_MILLIS) valueAnimator.addUpdateListener(this); valueAnimator.setRepeatCount(ValueAnimator.INFINITE); valueAnimator.start(); }