2010-09-19 29 views

Répondre

2

Je ne suis pas un programmeur Android, mais, en guise de conseil général, je dirais que vous devriez effectuer le sommeil, mieux dit l'attente, sur un autre thread et exécuter à la fin de la période d'attente, sur le principal thread, une méthode qui active la visibilité de votre imageview. Pour entrer dans des détails plus spécifiques, je dirais que vous devez utiliser un objet Handler car vous ne pouvez pas mettre à jour la plupart des objets d'interface utilisateur dans un thread séparé. Lorsque vous envoyez un message au gestionnaire il être sauvé dans une file d'attente et sont exécutées par le thread d'interface utilisateur le plus rapidement possible:

public class MyActivity extends Activity { 

// Handler needed for callbacks to the UI thread 
final Handler mHandler = new Handler(); 

// Create runnable for posting 
final Runnable mUpdateUIState = new Runnable() { 
    public void run() { 
     updateUIState(); 
    } 
}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    [ . . . ] 
} 

protected void startToggle() { 

    // Fire off a thread to do the waiting 
    Thread t = new Thread() { 
     public void run() { 
      Thread.Sleep(5000); 
      mHandler.post(mUpdateUIState); 
     } 
    }; 
    t.start(); 
} 

private void updateUiState() { 

    // Back in the UI thread -- toggle imageview's visibility 
    imageview.setVisibility(1 - imageview.getVisibility()); 
} 
} 

ou, un extrait d'une version plus courte,

Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     public void run() { 
       imageview.setVisibility(1 - imageview.getVisibility()); 
     } 
    }, 5000); 

en utilisant la méthode postDelayed, qui incorpore le délai dans la logique d'écriture de message.

2

Utilisez un AlphaAnimation sur le ImageView avec une durée de 10 secondes allant de alpha 100 à 0 et de nouveau à 100 à nouveau. Ensuite, utilisez un compte de réactualisation de INFINITE. Vous pouvez utiliser un interpolateur pour produire un effet très agréable tandis que ImageView apparaît ou disparaît.