我正在尝试在 ListView 中显示图像的缩略图。这些图像位于我的 SDCard 上的 Camera 文件夹中。我正在使用 BitmapFactory.decodeFile 读取图像。我想在文件被解码时显示一个 ProgressDialog。我试图先显示 ProgressDialog,然后在 for 循环中调用 decodeFile。直到 for 循环之后才会显示 ProgressDialog。在显示 ProgressDialog 之前,对 decodeFile 的调用似乎正在运行。
如何在我的 for 循环之前显示 ProgressDialog?
公共类 ActivityProgressBar 扩展 ListActivity {
private Vector<RowFileData> fileDataDisplay = null;
RowFileData fileData;
ProgressDialog progressDialog = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list);
progressDialog = new ProgressDialog(this);
progressDialog.setMessage("Loading thumbnails...");
fileDataDisplay = new Vector<RowFileData>();
File currentDirectory = new File("/mnt/sdcard/dcim/camera");
File[] currentDirectoryFileList = currentDirectory.listFiles();
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inSampleSize = 16;
progressDialog.show();
for(int i=0; i<currentDirectoryFileList.length; i++)
{
File currentDirectoryFile = currentDirectoryFileList[i];
fileData = new RowFileData(BitmapFactory.decodeFile(currentDirectoryFile.getPath(), opts), currentDirectoryFile.getPath());
fileDataDisplay.add(fileData);
Log.v("myLog", "inside for loop");
}
}
private class RowFileData
{
protected Bitmap rowBitmap;
protected String rowFileName;
RowFileData(Bitmap bitmapPreview, String fileName)
{
rowBitmap = bitmapPreview;
rowFileName = fileName;
}
}
}
我已经注释掉了对 progressDialog.dismiss() 的调用,以验证在 for 循环之后显示 ProgressDialog。为了便于阅读,我删除了在 ListView 中显示图像的代码行。我用我的日志验证了我仍在 for 循环中。
谢谢