2011-12-20 3 views
1

Я использую функцию, чтобы показать картину:Загрузка кинофильм загрузки прогресс

Bitmap imageBitmap = loadBitmap(URL); 

LoadBitmap(), как показано ниже:

private Bitmap loadBitmap(String url) { 
try { 
Bitmap bm = BitmapFactory.decodeStream((InputStream)this.fetch(url)); 
return bm; 
} 
catch(Exception e) { 
e.printStackTrace(); 
return null; 
} 
} 

И принести() ниже:

public Object fetch(String address) { 
try { 
URL url = new URL(address); 
Object content = url.getContent(); 
return content; 
} 
catch(Exception e) { 
e.printStackTrace(); 
} 
return this; 
} 

I хотите показать ход загрузки или load.png во время загрузки. И закончите с завершением загрузки изображения и покажите его. Как я могу это сделать? Я пытаюсь сделать как ProgressDialog. Но я не знаю, как использовать?

ответ

2

Вы можете использовать AsyncTask, чтобы показать диалог о ходе работы по методу PreExecute() и скрыть/отклонить его в методе PostExecute().

ProgressDialog prog = new ProgressDialog(this); // Create Progress Dialog 


private class DownloadBitmap extends AsyncTask<Void, Integer, Void>{ 

    @Override 
    protected void onPreExecute() { 
     // TODO Auto-generated method stub 
     super.onPreExecute(); 
     //Display progressDialog before download starts 
     prog.show(); 

    } 

    @Override 
    protected void onPostExecute(Void result) { 
     // TODO Auto-generated method stub 
     super.onPostExecute(result); 
     prog.hide(); //Hide Progress Dialog else use dismiss() to dismiss the dialog 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     // TODO Auto-generated method stub 
     /* 
     * Perform download and Bitmap conversion here 
     * 
     */ 
     return null; 
    } 

} 

И, наконец, вызвать AsyncTask через,

DownloadBitmap dd = new DownloadBitmap(); 
dd.execute(); 
1

вы не можете сделать это непосредственно, как Android не поддерживает GIF файлы. Поэтому, чтобы уйти с этим, вам нужно создать отдельный образ (загружать изображение в разделенные изображения) и сделать анимацию. Во время загрузки запустите анимацию и один раз Bitmap установите остановку анимации и установите Bitmap на ImageView

1

В этом примере отображается индикатор прогресса при загрузке изображения, а затем он невидим.

public class ImageDownload extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main1); 

     ImageView mainImageView = (ImageView) findViewById(R.id.imageView); 
     ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar); 
     String imageurl = "http://ipadwallpaperportal.com/wp-content/main/2011_09/purple-flower-close-up-1024x1024-wallpaper.jpg"; 
     ImageDownloadMessageHandler imageDownloadMessageHandler1 = new ImageDownloadMessageHandler(
       progressBar, mainImageView); 
     ImageDownlaodThread imageDownlaodThread = new ImageDownlaodThread(
       imageDownloadMessageHandler1, imageurl); 
     imageDownlaodThread.start(); 

    } 

    class ImageDownlaodThread extends Thread { 
     ImageDownloadMessageHandler imageDownloadMessageHandler; 
     String imageUrl; 

     public ImageDownlaodThread(
       ImageDownloadMessageHandler imageDownloadMessageHandler, 
       String imageUrl) { 
      this.imageDownloadMessageHandler = imageDownloadMessageHandler; 
      this.imageUrl = imageUrl; 
     } 

     @Override 
     public void run() { 
      Drawable drawable = LoadImageFromWebOperations(imageUrl); 
      Message message = imageDownloadMessageHandler.obtainMessage(1, 
        drawable); 
      imageDownloadMessageHandler.sendMessage(message); 
      System.out.println("Message sent"); 
     } 

    } 

    class ImageDownloadMessageHandler extends Handler { 
     ProgressBar progressBar; 
     View imageTextView; 

     public ImageDownloadMessageHandler(ProgressBar progressBar, 
       View imageTextView) { 
      this.progressBar = progressBar; 
      this.imageTextView = imageTextView; 
     } 

     @Override 
     public void handleMessage(Message message) { 
      progressBar.setVisibility(View.GONE); 
      imageTextView.setBackgroundDrawable(((Drawable) message.obj)); 
      imageTextView.setVisibility(View.VISIBLE); 
     } 

    } 

    Drawable LoadImageFromWebOperations(String strUrl) { 
     /** 
     * This is one method 
     */ 
     long x1 = System.currentTimeMillis(); 

     Drawable d = null; 
     InputStream is = null; 
     try { 
      is = (InputStream) new URL(strUrl).getContent(); 
      d = Drawable.createFromStream(is, "src name"); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     long x2 = System.currentTimeMillis(); 
     long res = x2 - x1; 
     Log.v("Image Downloading Time", "" + res); 
} 
Смежные вопросы