2011-12-20 11 views
1

I画像を表示する機能を使用して下記のように)読み込み画像表示ローディング進行

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

あなたはPreExecute()法上の進捗状況ダイアログを表示し、表示/非PostExecute()方法でそれを却下するAsyncTaskを使用することができます。

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; 
    } 

} 

そして最後に

DownloadBitmap dd = new DownloadBitmap(); 
dd.execute(); 
を通じて、AsyncTaskを呼び出します
1

AndroidはGIFファイルをサポートしていないとして、あなたが、直接それを行うことはできません。だから離れて別のイメージ(分割イメージに画像を読み込む)を作成し、それをアニメーションを作成する必要があります。読み込み時にアニメーションを実行し、Bitmap availはアニメーションを停止し、ビットマップを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); 
} 
関連する問題