Ho buttato un po di codice per dare vita ad un idea che mi era passata per la mente, il codice funziona ma vorrei un vostro parere, non è troppo "pesante"?:
final AnimationDrawable anm_griglia = (AnimationDrawable) img_griglia.getBackground();
anm_griglia.start();
Thread t = new Thread(new Runnable() {
public void run() {
int index = 0;
boolean loop=true,temp=true;
Drawable uno = null,due=null;
while(loop){
if(index == anm_griglia.getNumberOfFrames()){
loop=false;
}else{
if(temp){
uno=anm_griglia.getCurrent();
temp=false;
}else{
due=anm_griglia.getCurrent();
temp=true;
}
if(uno !=due){
index++;
}
}
}
Log.v("FINITO","test"); //QUI L'ANIMAZIONE E' FINITA
}
});
t.start();Codice non ottimizzato, attendo qualcosa di più performante io credo che usare il metodo che ho realizzato sia davvero impensabile, per chi non vuole mettersi a leggere il codice l'algoritmo in un ciclo controlla che la variabile index sia uguale al numero massimo di frame che contiene l'animazione, se ciò è vero si conclude il ciclo, caso contrario prendo la Drawable del frame precedente e quella attuale e li confronto se sono diverse vuol dire che il cambiamento di frame è avvenuto correttamente e quindi aumento la variabile index, caso contrario vorrà dire che ancora il passaggio di frame non è avvenuto e ripeto il ciclo.