Изменение радиуса круга программно - Canvas

(1/3) означает целочисленное деление, поэтому вы не можете получить десятичное значение из этого деления. Для решения этой проблемы используйте:

public static void main(String[] args) {
        double g = 1.0 / 3;
        System.out.printf("%.2f", g);
    }
2
задан Krul 14 July 2018 в 02:58
поделиться

1 ответ

Ваш 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();

}
0
ответ дан Danny Buonocore 17 August 2018 в 12:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: