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 и показать фактический макет.

Другие вопросы по тегам