2011-06-01 2 views
0

J'utilise ces codes pour afficher une image de ma demande:Voir ProgressBar Gallery intention

Intent intent = new Intent(); 
intent.setAction(android.content.Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.fromFile(imgFile), "image/*"); 
startActivity(intent); 

Je n'ai pas de problème en regardant l'image, mais quand la taille est un peu plus grand, l'intention garde en blanc jusqu'à ce que l'image soit prête à charger et à montrer.

Ma question est, comment puis-je montrer un ProgressBar, ou de façon plus avancée, montrer une image temporaire, avant que l'image réelle soit affichée?

Merci pour la réponse.

+1

Je épais que lorsque l'appel startActivity (intention), la visionneuse d'image par défaut d'Android est affiché, vous ne peut pas changer un autre comportement de l'application. – xtr

+1

Merci. J'y pensais aussi mais j'espère que quelqu'un pourra trouver quelque chose comme visionneuse d'image sur Facebook pour Android. –

Répondre

1

Essayez AsyncTask comme indiqué ici:

try{ 
class test extends AsyncTask{ 


    TextView tv_per; 
    int mprogress; 

    Dialog UpdateDialog = new Dialog(ClassContext); 

    @Override 
    protected void onPreExecute() { 
     // TODO Auto-generated method stub 
     mprogress = 0; 

     UpdateDialog.setTitle(getResources().getString(R.string.app_name)); 
     UpdateDialog.setContentView(R.layout.horizontalprogressdialog); 
     TextView dialog_message = (TextView)UpdateDialog.findViewById(R.id.titleTvLeft); 
     tv_per = (TextView)UpdateDialog.findViewById(R.id.hpd_tv_percentage); 
     dialog_message.setText(getResources().getString(R.string.dialog_retrieving_data)); 
     dialog_message.setGravity(Gravity.RIGHT); 
     UpdateDialog.setCancelable(false); 
     UpdateDialog.show(); 
     super.onPreExecute(); 
    } 



    @Override 
    protected void onProgressUpdate(Object... values) { 
     // TODO Auto-generated method stub 
     ProgressBar update = (ProgressBar)UpdateDialog.findViewById(R.id.horizontalProgressBar); 
     update.setProgress((Integer) values[0]); 
     int percent = (Integer) values[0]; 
     if(percent>=100) 
     { 
      percent=100; 
     } 
     tv_per = (TextView)UpdateDialog.findViewById(R.id.hpd_tv_percentage); 
     tv_per.setText(""+percent); 
    } 



    @Override 
    protected Object doInBackground(Object... params) { 
     // TODO Auto-generated method stub 
     //your code of UI operation 
} 

     super.onPostExecute(result); 
     UpdateDialog.dismiss(); 
    } 

} 
new test().execute(null); 

} 
catch(Exception e) 
{ 
e.printStackTrace(); 
} 

Se référer également à ce lien: Fetch data from server and refresh UI when data is fetched? :)

+1

Votre lien est brisé. Ou, vous avez peut-être oublié d'inclure le lien. –

+1

Merci pour la réponse. J'ai essayé, en utilisant AsyncTask, mais le problème reste toujours. Je pense que le commentaire de @xtr était correct. –