2011-11-17 3 views
1

Je voudrais télécharger 10 images JPG d'un site.Android jpg animation

Les images prises à intervalles où >> qui ne pose aucun problème

  1. Comment puis-je enregistrer des images dans un tableau de photos. Comment pourrais-je les montrer comme une image en mouvement (comme film).
  2. Quel composant utiliser sur Android (imageView, animator)?
  3. Comment est-ce que j'animerais le composant?

Des exemples spécifiques seraient grandement appréciés.

+0

Bienvenue dans Stackoverflow! Si vous avez une réponse utile, faites-le voter. Si la réponse répond à votre question, veuillez cliquer sur la coche verte à côté de celle-ci pour accepter la réponse. –

Répondre

0

J'ai un exemple de ceci, ici je télécharge trois images du site de forme et puis stocke dans le chemin "/ mnt/sdcard/..". Si vous voulez montrer cela dans l'animation, je pense que vous pouvez utiliser flipper et ensuite ajouter dynamiquement cette image et en utilisant une tâche asynchrone, vous pouvez retourner l'image suivante.

import java.io.BufferedInputStream; 
import java.io.FileOutputStream; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.net.URL; 
import java.net.URLConnection; 
import android.app.Activity; 
import android.app.ProgressDialog; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.Toast; 

public class TestActivity extends Activity { 
    /** Called when the activity is first created. */ 
    Button btn; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     btn=(Button)findViewById(R.id.startBtn); 
     final String url1 = "http://farm1.static.flickr.com/114/298125983_0e4bf66782_b.jpg"; 
     final String url2 = "http://farm1.static.flickr.com/114/298125983_0e4bf66782_b.jpg"; 
     final String url3 = "http://farm1.static.flickr.com/114/298125983_0e4bf66782_b.jpg"; 
     btn.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       new AsyncDownload().execute(url1,url2,url3); 
      } 
     }); 
    } 

    //------------------------------Class AsyncDownload---------------------------------- 

    public class AsyncDownload extends AsyncTask<String, String, String> 
    { 
     ProgressDialog dialog; 

     @Override 
     protected void onPostExecute(String result) { 
      // TODO Auto-generated method stub 
      super.onPostExecute(result);  
      dialog.dismiss(); 
      Toast.makeText(TestActivity.this,"Downloading complate successfully",2).show(); 
     } 

     @Override 
     protected void onPreExecute() { 
      // TODO Auto-generated method stub 
      super.onPreExecute(); 
      dialog=new ProgressDialog(TestActivity.this); 
      dialog.setMessage("Downloading file.."); 
      dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
      dialog.setMax(100); 
      dialog.show(); 
     } 

     @Override 
     protected void onProgressUpdate(String... values) { 
      // TODO Auto-generated method stub 
      super.onProgressUpdate(values); 
      dialog.setProgress(Integer.parseInt(values[0])); 
     } 

     @Override 
     protected String doInBackground(String... aurl) { 
      int count; 
      int lenghtOfFile=0; 
      long total = 0; 
      try { 
       for(int i=0;i<aurl.length;i++) 
       { 
        URL url = new URL(aurl[i]); 
        URLConnection conexion = url.openConnection(); 
        conexion.connect(); 
        lenghtOfFile =lenghtOfFile+conexion.getContentLength(); 
       } 
       for(int i=0;i<aurl.length;i++) 
       { 
        URL url = new URL(aurl[i]); 
        URLConnection conexion = url.openConnection(); 
        conexion.connect(); 
        InputStream input = new BufferedInputStream(url.openStream()); 
        OutputStream output = new FileOutputStream("/mnt/sdcard/img"+i+".jpg"); 

        byte data[] = new byte[1024];    

        while ((count = input.read(data)) != -1) { 
         total += count; 
         publishProgress(""+(int)((total*100)/lenghtOfFile)); 
         output.write(data, 0, count); 
        } 

        output.flush(); 
        output.close(); 
        input.close(); 
       } 
      } catch (Exception e) { 
       e.getMessage(); 

      } 
      return null; 
     } 

    } 

} 
+0

1. je vais utiliser votre idée pour stocker 10 fichiers jpg 2. mais maintenant pour le vrai problème j'ai besoin d'animer les 10 images jpg à intervalle de disons 300 msec. avoir un film comme effet. comment faire cela. quel composant utiliser? –

+0

Utilisez AnimationDrawable comme dans ma réponse. Parcourez vos images et appelez addFrame (yourDrawable, 300), où 'yourDrawable' est votre dessinable téléchargeable, et '300' est la durée d'une image individuelle. –

+0

Merci beaucoup de travail –

1

Vous voudrez probablement utiliser AnimationDrawable dans un ImageView.

Ajoutez des cadres à l'aide de la méthode addFrame(Drawable frame, int duration) et démarrez l'animation à l'aide de start().

Vous pouvez utiliser de nombreuses méthodes différentes pour télécharger et stocker l'image (peut-être sur un stockage externe ou un db).

+0

voir ci-dessus commentaire merci –

+0

@Shlomo - Si l'une de nos réponses vous a aidé, veuillez l'accepter en cliquant sur la coche. –