簡體   English   中英

Android - 在等待來自URL的imageview時顯示進度對話框

[英]Android - Show progress dialogue while waiting for imageview from a URL

我正在從URL加載圖像視圖,並希望在等待圖像加載時顯示進度對話框,當我運行應用程序時,porgress對話顯示半秒然后消失並且與狀態無關圖片。 我怎樣才能使進度對話框只在圖像加載后消失?

下面是我的代碼

//below is the download image task****************************************

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
      ImageView bmImage;

      public DownloadImageTask(ImageView bmImage) {
          this.bmImage = bmImage;
      }

      protected Bitmap doInBackground(String... urls) {
          String urldisplay = urls[0];
          Bitmap mIcon11 = null;
          try {
            InputStream in = new java.net.URL(urldisplay).openStream();
            mIcon11 = BitmapFactory.decodeStream(in);
          } catch (Exception e) {
              Log.e("Error", e.getMessage());
              e.printStackTrace();
          }
          return mIcon11;
      }

      protected void onPostExecute(Bitmap result) {
          bmImage.setImageBitmap(result);
      }
    }

// above is the download imagetask ****************************************************

public class MyTask extends AsyncTask<Void, Void, Void> {
      private ProgressDialog progress;

    public MyTask(ProgressDialog progress) {
        this.progress = progress;
      }

      public void onPreExecute() {
        progress.show();
      }

      public void onPostExecute(Void unused) {

          progress.dismiss();
      }

    @Override
    protected Void doInBackground(Void... params) {
         new DownloadImageTask((ImageView) findViewById(R.id.ivget))
            .execute("http://dieboltdesigns.files.wordpress.com/2011/07/tom-brady-beast-poster-copy.png");

    //above makes the progress bar
        return null;
    }
    }

如果您需要doinbackgound方法/ asynctask,請在評論中告訴我

謝謝

問題是如果我沒有錯,你在AsyncTask使用了AsyncTask DownloadImageTask是另一個獨立於當前線程的線程。 那就是問題所在。

只需在MyTask記下DownloadImageTask所有代碼。

編輯

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
  ImageView bmImage;
  ProgressDialog pd;
  Context mContext;

  public DownloadImageTask(Context context,ImageView bmImage) {
      this.bmImage = bmImage;
      mContext = context;
  }

  public void onPreExecute() {
      pd = ProgressDialog.show(mContext, "dialog title","dialog message", true);   
  } 

  public void onPostExecute(Bitmap result) {
      pd.dismiss();
      if(result!=null)
          bmImage.setImageBitmap(result);
  }

  protected Bitmap doInBackground(String... urls) {
      String urldisplay = urls[0];
      Bitmap mIcon11 = null;
      try {
        InputStream in = new java.net.URL(urldisplay).openStream();
        mIcon11 = BitmapFactory.decodeStream(in);
      } catch (Exception e) {
          Log.e("Error", e.getMessage());
          e.printStackTrace();
      }
      return mIcon11;
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM