我有一个方法和一个位图
private static Bitmap do(Bitmap bit){
//Show loading until return;
return bit;
}
当我使用以下代码时,大约需要30秒或更长时间。我想要的是在方法完成之前显示加载栏
bitmap = do(bitmap);
我如何实现这一目标?
示例
我怎样做调整大小位图:
Bitmap bit;
bit = getResizedBitmap(bit,100,100);//takes 20 seconds
image.setImageBitmap(bit);
public Bitmap getResizedBitmap(Bitmap bm, int newWidth, int newHeight) {
int width = bm.getWidth();
int height = bm.getHeight();
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
// CREATE A MATRIX FOR THE MANIPULATION
Matrix matrix = new Matrix();
// RESIZE THE BIT MAP
matrix.postScale(scaleWidth, scaleHeight);
// "RECREATE" THE NEW BITMAP
Bitmap resizedBitmap = Bitmap.createBitmap(
bm, 0, 0, width, height, matrix, false);
return resizedBitmap;
}
如何使用AsyncTask
答案 0 :(得分:1)
首先:您应该将方法放在AsyncTask。
中第二个:在调用方法之前显示进度条。然后,在方法完成时隐藏它。
示例:强>
private class MyTask extends AsyncTask<Bitmap, Integer, Boolean> {
protected Boolean doInBackground(Bitmap... bit) {
//show progress bar
//call your method
return true;
}
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}
protected void onPostExecute(Boolean done) {
//hide progress bar
}
}
你像这样运行你的AsyncTask:
Bitmap bit;
new MyTask().execute(bit);
//Now your Bitmap object is ready.