Aller au contenu

ProgressBar entre 2 activités


Jbay

Recommended Posts

Bonjour bonjour !

Je pense que le titre exprime assez mon "besoin"

En fait, il y a un temps de chargement entre deux de mes activités, donc je pense que c'est tout de même plus esthétique d'avoir une ProgressDialog qui nous demande de patienter ^_^

Voila, je reste a disposition pour toute info supplémentaires ;)

Lien vers le commentaire
Partager sur d’autres sites

Ne serait-ce pas plutôt la seconde activité qui exécute des lourds calculs dans le onCreate ?

public class MySecondActivity extends Activity {	
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState); 
      new InitActivityAsyncTask().execute(this);
   }

   private class InitActivityAsyncTask extends AsyncTask<Activity, Void, InitActivityAsyncTask.InitActivityAsyncTaskReturn>{
	@Override
	protected void onPreExecute() {
		//Avant l'execution, réalisé sur le Thread de l'UI. Possibilité de toucher au widjet de l'UI.
		super.onPreExecute();
		this.setContentView(R.layout.please_wait);		
	}


	@Override
	protected InitActivityAsyncTaskReturn doInBackground(Activity... params) {
		//Execution, réalisé sur un Thread séparé de l'UI.
		//Pour faire les calcul lourd sans figer l'UI
		//Attention à ne pas faire appel à des widget de la vue. 
		//Mais normalement il n'y en a pas puisque la vue courante est R.layout.please_wait.
		Activity activity = params[0];
		InitActivityAsyncTaskReturn rtn = new InitActivityAsyncTaskReturn(activity);
		rtn.uneImageLourdeACharger = activity.getResources().getDrawable(R.drawable.icon);			
		return rtn;
	}

	@Override
	protected void onPostExecute(InitActivityAsyncTaskReturn result) {
		//Après l'execution, réalisé sur le Thread de l'UI. Possibilité de toucher au widjet de l'UI.
		super.onPostExecute(result);
		result.activity.setContentView(R.layout.my_second_activity);				
		ImageView imageView = result.activity.findViewById(R.id.imageView);
		imageView.setImageDrawable(result.uneImageLourdeACharger);
	}

	/**
	 * 
	 * Classe contenant toutes les données nécessaire dans onPostExecute
	 * 
	 *
	 */
	private class InitActivityAsyncTaskReturn{
		Activity activity;
		public Drawable uneImageLourdeACharger;

		public InitActivityAsyncTaskReturn(Activity activity){
			this.activity = activity;
		}
	}
}
}

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...