Android: Показать экран во время загрузки
Я использую AsyncTask для получения данных с сервера и хочу показать экран во время его загрузки следующим образом:
private class GetListTask extends AsyncTask {
protected void onPreExecute() {
Intent intent = new Intent();
intent.setClass(Start.this, Wait.class);
startActivity(intent);
}
protected Bitmap doInBackground(Object... args) {
// здесь я получаю данные с сервера
d = getImageFromURL(Start.valuesArray[Integer.parseInt(Value)][7]);
Bitmap bitmap = ((BitmapDrawable) d).getBitmap();
double ratio = (double) bitmap.getWidth() / (double) bitmap.getHeight();
Bitmap scaled = Bitmap.createScaledBitmap(bitmap, width, (int) (width / ratio), true);
return scaled;
}
protected void onPostExecute(Object objResult) {
if (objResult != null && objResult instanceof Bitmap) {
Bitmap result = (Bitmap) objResult;
im.setImageBitmap(result);
}
}
}
Теперь в onPostExecute() мне нужно снова скрыть этот экран ожидания, но как мне это сделать? Спасибо за помощь!
2 ответа
Решение
Вместо того, чтобы начать другую деятельность, вы можете показать свое изображение в PopupDialog и закрыть его в onPostExecute
Используйте этот макет вместо...
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<!-- Your actual layout. width & height fill_parent -->
<ImageView
android:id="@+id/wait_image"
android:layout_width="fill_parent"
android:visibility="gone"
android:layout_height="fill_parent"
android:src="@drawable/wait_screen"
/>
</FrameLayout>
Сейчас на preExecute()
показать ожидающий просмотр изображений и скрыть фактический макет.
И на postExecute()
скрыть imageView и показать фактический макет.