2011-09-26 5 views
1

Je .png plusieurs localiser (images de mon animation) dans le dossier assets, que je les accèderont par AssetManager dans ma méthode de onCreate() de Activity et remplir mon AnimationDrawable avec eux. Comme décrit dans le guide dev, il est impossible de démarrer Animation en méthode onCreate() et si j'ai besoin de le démarrer immédiatement que je devrais remplacer la méthode onWindowFocusChanged(). Mais même dans une telle implémentation mon objet dessinable n'apparaît pas sur l'écran. Voici le code de mon activité:Création AnimationDrawable des actifs

package org.example.Animation; 

import java.io.IOException; 

import android.app.Activity; 
import android.content.res.AssetManager; 
import android.graphics.drawable.AnimationDrawable; 
import android.graphics.drawable.Drawable; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.MotionEvent; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 

public class MainActivity extends Activity { 
    private LinearLayout ll; 
    private ImageView image; 
    private AnimationDrawable ad; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     ll = new LinearLayout(this); 

     LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(-2, -2); 
     image = new ImageView(this); 
     ll.addView(image, lp); 
     setContentView(ll); 


     AssetManager am = getAssets(); 
     ad = new AnimationDrawable(); 
     StringBuilder sb= new StringBuilder("loader/loader-"); 

     // Fetching frames from assets 
     for(int i = 1; i < 11; i++) { 
      sb.append(i); 
      sb.append(".png"); 
      Log.d("DownloadImageTask", "Fetching image: " + sb.toString());   
      try { 
       Drawable d = Drawable.createFromStream(am.open(sb.toString()), null); 
       ad.addFrame(d, 500);           
      } 
      catch (IOException e) { 
       Log.d("ImageViewAdapter", "IOException: " + e.getMessage()); 
      } 
      sb.delete(14, sb.length()); // 14 - is the index of first digit of frame 
     } 

     image.setBackgroundDrawable(ad);        
    } 

    @Override 
    public void onWindowFocusChanged(boolean hasFocus) {   
     super.onWindowFocusChanged(hasFocus); 
     ad.start(); 
    } 
} 

Dites-moi s'il vous plaît ce qui ne va pas dans mon code?

P.S S'il vous plaît, ne me demandez pas pourquoi je n'utilise pas de fichier xml. En short, mon objectif principal est d'éviter l'utilisation du fichier R.java.

Répondre

0

Attente pendant longtemps, trouvé la solution moi-même grâce à this issue. Juste besoin de modifier les valeurs de la vue et de Largeur hauteur fixe ou FILL_PARRENT