2011-03-04 5 views
-1

J'ai ce code:Changer les images en temps réel

package com.example.helloandroid; 

import java.util.Random; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.ImageView; 
import android.widget.TableLayout; 
import android.widget.TableRow; 

public class HelloAndroid extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     for(int i = 0; i < 6; i++) { 
      TableLayout tl = (TableLayout) findViewById(R.id.T); 
      TableRow tr = (TableRow) tl.getChildAt(i); 
      for(int j = 0; j < 6; j++) { 
       ImageView img = (ImageView) tr.getChildAt(j); 
       Random randomGenerator = new Random(); 
       int randomInt = randomGenerator.nextInt(2); 
       if (randomInt == 1) { 
        img.setImageResource(R.drawable.w); 
       } 
       else { 
        img.setImageResource(R.drawable.b); 
       } 
       try { 
        Thread.sleep(100); 
       } catch (InterruptedException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } 
     } 
    } 
} 

Je veux que quand je change une image, il changer soit à l'écran. Ce code gèle juste jusqu'à ce que toutes les images soient changées. Pourquoi?

Répondre

0

J'ai modifié votre code utilisation essayer ci-dessous un

public class HelloAndroid extends Activity 
{ 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     new Thread(new Runnable() 
     { 
      @Override 
      public void run() 
      { 
       for (int i = 0; i < 6; i++) 
       { 
        TableLayout tl = (TableLayout) findViewById(R.id.T); 
        TableRow tr = (TableRow) tl.getChildAt(i); 
        for (int j = 0; j < 6; j++) 
        { 
         ImageView img = (ImageView) tr.getChildAt(j); 
         Random randomGenerator = new Random(); 
         int randomInt = randomGenerator.nextInt(2); 
         runOnUiThread(new Runnable() 
         { 
          @Override 
          public void run() 
          { 
           if (randomInt == 1) 
           { 
            img.setImageResource(R.drawable.w); 
           } 
           else 
           { 
            img.setImageResource(R.drawable.b); 
           } 
          } 
         }); 
         try 
         { 
          Thread.sleep(100); 
         } 
         catch (InterruptedException e) 
         { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 
        } 
       } 
      } 
     }).start(); 

    } 
} 
+0

Il me dit que l'application s'est fermée de façon inattendue. – pythonFoo

+0

déboguer et vérifier sur quelle ligne son venir ou coller votre sortie de journal – ingsaurabh

+0

Désolé, cela fonctionne. C'était une erreur de programmation. – pythonFoo

1

Essayez d'utiliser un AsynchTask pour cela, parce que tout votre code fonctionne sur le thread principal il doit terminer toutes les boucles avant que la vue est prêt (Expliquant le gel).