Android: ¿Cómo hacer la barra de progreso horizontal con Interpolator?
Tengo una barra de progreso vista como esto:
<ProgressBar android:id="@+id/progress_bar" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="100"/>
Dura 3 segundos, así que ¿cómo usar el interpolador para hacer la actualización sin problemas?
ObjectAnimator animation = ObjectAnimator.ofInt(what_is_in_here?); animation.setDuration(3000); // second animation.setInterpolator(new DecelerateInterpolator()); animation.start();
Realmente aprecio tu ayuda. Muchas gracias por adelantado.
Descubrí la solución:
progressBar = (ProgressBar) findViewById(R.id.progress_bar); ObjectAnimator animation = ObjectAnimator.ofInt(progressBar, "progress", 100, 0); animation.setDuration(3500); // 3.5 second animation.setInterpolator(new DecelerateInterpolator()); animation.start();
Aquí está una explicación detallada:
Crear un objeto de animación:
ObjectAnimator animation = ObjectAnimator.ofInt(progressBar, "progress", 100, 0);
- ProgressBar: referencia al ProgressBar en el diseño;
- "Progreso" : el nombre de la propiedad a animar;
- 100: punto de partida de la animación;
- 0: punto final de la animación.
Y establecer una interpolación:
animation.setInterpolator(new DecelerateInterpolator());
Es posible utilizar diferentes interpoladores para nuestra animación, como por ejemplo:
- LinearInterpolator: donde la tasa de cambio es constante.
-
DecelerateInterpolator: donde la tasa de cambio comienza rápidamente y luego desacelera.
-
AccelerateInterpolator: donde la tasa de cambio comienza lentamente y luego se acelera.
-
OvershootInterpolator: donde el cambio se desplaza hacia adelante y sobrepasa el último valor y luego regresa.
- Para otros interpoladores, verifique la interfaz android.view.animation.Interpolator.