Primero déjame explicarte mi objetivo. Estoy tratando de hacer un Animation
que cambie las propiedades de un ArcShape
. Un constructor ArcShape's
toma dos campos: startAngle
y sweepAngle
. Quiero animar el sweepAngle
para que aparezca en la pantalla como un círculo que se reduce continuamente.Animación personalizada de Android para ArcShape
Puede imaginar esta animación imaginando PacMan. Imagina que su boca está cerrada. Esta animación sería similar a la apertura de su mandíbula superior más y más hasta que no haya más PacMan.
Ahora ... Tengo un par de problemas con la implementación de esto. Primero, una vez que se crea un ArcShape
, no hay métodos integrados para cambiarlo sweepAngle
. Esto me lleva a mi primera pregunta: ¿hay alguna manera de anular ArcShape
e implementar algún método setSweepAngle
? ¿O tendré que crear un new ArcShape
por cada sweepAngle
que deseo mostrar?
Ahora vamos al segundo problema ... Suponiendo que encontré una solución al primer problema, ¿cómo podría crear este Animation
? Esta es la esencia de lo que tengo ahora:
public class OpenPacman extends Animation {
public OpenPacman(float startAngle, float sweepAngle) {
mStartAngle = startAngle;
mSweepAngle = sweepAngle;
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
/* This represents the current sweepAngle */
float currAngle = mStartAngle + ((mSweepAngle - mStartAngle) * interpolatedTime);
//Now I need to update the ArcShape's sweepAngle to currAngle. But HOW?
}
}
Tuve que agregar "invalidate();" al método applyTransformation para que la vista se vuelva a dibujar con el nuevo ángulo. – marmor
Seguí las instrucciones pero mi vista personalizada no aparece en la IU. ¿puedes publicar tu código completo? –
Lo sé, siempre viejo mensaje .... Pero no veo cómo esto anima el arco. Simplemente actualiza el ángulo actual y luego puede volver a dibujarlo, pero no está animado. Entonces ... ¿Cómo animaste esto exactamente? –