[英]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.