AnimationDrawable programmaticamente senza lista-animazioni xml

Sono in una situazione in cui voglio visualizzare l’animazione dall’elenco dinamico delle immagini. Voglio usare AnimationDrawable per questo scopo, ma sfortunatamente sono bloccato … 🙁 il mio codice è come

ImageView globe = (ImageView) findViewById(R.id.globe); AnimationDrawable animation = new AnimationDrawable(); animation.setOneShot(true); Resources res = this.getResources(); while (from <= to) { String name = "globe_" + String.format("%03d", from); int globeId = res.getIdentifier(name, "drawable", this.getPackageName()); animation.addFrame(res.getDrawable(globeId), 200); from++; } globe.setBackgroundDrawable(animation); globe.post(new Runnable(){ @Override public void run() { animation.start(); } }); 

Quindi Animation.addFrame (Frame disegnabile, int duration) prende un drawable che puoi creare da una Bitmap.

Se il tuo elenco di immagini viene caricato dynamicmente:

 List images; int duration = 200; for(Bitmap image: images){ BitmapDrawable frame = new BitmapDrawable(image); animation.addFrame(frame, duration); } 

Prova questo, dovrebbe sicuramente funzionare.

Ho appena fatto animation.start() dopo il ciclo e chiamato la funzione da una eseguibile e ha funzionato

 while (from < = to) { String name = "globe_" + String.format("%03d", from); int globeId = res.getIdentifier(name, "drawable", this.getPackageName()); animation.addFrame(res.getDrawable(globeId), 200); from++; } globe.setBackgroundDrawable(animation); animation.start()