显示加载栏直到方法完成

时间:2015-08-09 08:18:19

标签: android

我有一个方法和一个位图

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

获得相同的结果

1 个答案:

答案 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.