Ciao a tutti, ragazzi!
Ho bisogno del vostro aiuto!
Ho un problema con l'animazione di alcune paperelle (contenute in diverse ImageView) per un giochino che sto facendo.
Dopo un certo tempo ho bisogno che alcune papere scompaiano con una certa animazione. Per capirci, l'animzione fa in modo che le papere passino da "verticali" a "orizzontali".
Per fare ciò ho creato la classe HideDuckAnimation che dovrebbe funzionare visto che l'ho già usata per una altra animazione:
import android.graphics.Camera;
import android.graphics.Matrix;
import android.view.animation.Animation;
import android.view.animation.Transformation;
public class HideDuckAnimation extends Animation {
private float pivotX;
private float pivotY;
private short finalDegrees;
public HideDuckAnimation() {
super();
}
@Override
public void initialize(int width, int height, int parentWidth, int parentHeight) {
super.initialize(width, height, parentWidth, parentHeight);
pivotX = width / 2;
pivotY = height;
this.finalDegrees = -90;
setDuration(2000L);
setFillAfter(true);
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
Matrix matrix = t.getMatrix();
Camera camera = new Camera();
camera.save();
camera.rotateX(interpolatedTime * finalDegrees);
camera.getMatrix(matrix);
matrix.preTranslate(-pivotX, -pivotY);
matrix.postTranslate(pivotX, pivotY);
camera.restore();
}
}Questa invece è l'activity del gioco: (riporto solo le parti che credo siano importanti per capire dove stia il problema altrimenti sarebbe molto più lunga)
public class Play extends Activity {
private Animation hideDuckAnimation;
private Handler handler;
// più altre variabili per il gioco
public void onCreate(Bundle savedInstanceState) {
// ...altre varie istruzioni...
hideDuckAnimation = new HideDuckAnimation();
BeginMatch();
}
private void HideDuck(ImageView img) {
img.setAnimation(hideDuckAnimation);
hideDuckAnimation.start();
}
//tra le varie funzioni ci sono queste sotto riportate.
private void BeginMatch() {
handler.postDelayed(new Runnable() { //faccio trascorrere 2 secondi
@Override
public void run() {
EndMatch();
}
}, 2000);
}
private void EndMatch() {
ImageView duck;
for (short i = 0; i < 10; i++) { // 10 è il numero di papere e quindi di
// ImageView nel gioco
//assegno a duck la imageview corretta e poi...
HideDuck(duck);
}
}
}Non risultano nè errori di compilazione nè in fase di esecuzione. Quello che succede è che dopo i due secondi le ImageView non vengono animate nè modificate in alcun modo, restano semplicemente così come erano prima.
Ringrazio da subito chi mi vuole dare una mano!