Добавить экран загрузки при запуске приложения для Android

Мое приложение загружает стартовую страницу за 10 секунд. В это время 10 секунд экран андроида пуст. За это время я хочу добавить экран загрузки. Как его добавить? И скажите мне в приложении, как узнать, что загружается стартовая страница? И скажите, как это сделать в моем приложении?

Ответ 1

Вы можете использовать заставку во время первой загрузки, например:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);

        Thread welcomeThread = new Thread() {

            @Override
            public void run() {
                try {
                    super.run();
                    sleep(10000);  //Delay of 10 seconds
                } catch (Exception e) {

                } finally {

                    Intent i = new Intent(SplashActivity.this,
                            MainActivity.class);
                    startActivity(i);
                    finish();
                }
            }
        };
        welcomeThread.start();
    }

Надеюсь, этот код поможет вам.

Ответ 2

используйте ProgressDialog.

ProgressDialog dialog=new ProgressDialog(context);
dialog.setMessage("message");
dialog.setCancelable(false);
dialog.setInverseBackgroundForced(false);
dialog.show();

скрыть его всякий раз, когда ваш пользовательский интерфейс готов с данными. вызов:

dialog.hide();

Ответ 3

Пожалуйста, прочитайте эту статью

Крис Стюарт написал там:

Заставки просто тратят ваше время, верно? Как разработчик Android, когда я вижу заставку, я знаю, что какой-то плохой разработчик должен был добавить в код задержку в три секунды.

Затем я должен смотреть на какое-то изображение в течение трех секунд, пока не смогу использовать приложение. И я должен делать это каждый раз, когда его запускают. Я знаю, какое приложение я открыл. Я знаю, что это делает. Просто позволь мне использовать это!

Заставки на верном пути

Я считаю, что Google не противоречит самому себе; старый совет и новый вместе. (Тем не менее, по-прежнему не очень хорошая идея использовать заставку, которая тратит время пользователя. Пожалуйста, не делайте этого.)

Однако для запуска приложений Android требуется определенное время, особенно при холодном запуске. Там есть задержка, которую вы не сможете избежать. Вместо того, чтобы оставить пустой экран в течение этого времени, почему бы не показать пользователю что-нибудь приятное? Это подход, который Google защищает. Не тратьте время пользователей, но не показывайте им пустой, ненастроенный раздел приложения при первом запуске.

Если вы посмотрите на последние обновления приложений Google, вы увидите соответствующее использование заставки. Взгляните, например, на приложение YouTube.

enter image description here

Ответ 4

Вы можете создать пользовательский экран загрузки вместо экрана заставки. если вы показываете заставку в течение 10 секунд, это не очень хорошая идея для пользователей. Поэтому лучше добавить пользовательский экран загрузки. Для пользовательского экрана загрузки вам могут потребоваться несколько разных изображений, чтобы они выглядели как gif. после этого добавьте изображения в папку res и создайте класс следующим образом:

public class LoadingScreen {private ImageView loading;

LoadingScreen(ImageView loading) {
    this.loading = loading;
}

public void setLoadScreen(){
    final Integer[] loadingImages = {R.mipmap.loading_1, R.mipmap.loading_2, R.mipmap.loading_3, R.mipmap.loading_4};
    final Handler loadingHandler = new Handler();
    Runnable runnable = new Runnable() {
        int loadingImgIndex = 0;
        public void run() {
            loading.setImageResource(loadingImages[loadingImgIndex]);
            loadingImgIndex++;
            if (loadingImgIndex >= loadingImages.length)
                loadingImgIndex = 0;
            loadingHandler.postDelayed(this, 500);
        }
    };
    loadingHandler.postDelayed(runnable, 500);
}}

В своей MainActivity вы можете передать класс UploadScreen следующим образом:

private ImageView loadingImage;

Не забудьте добавить ImageView в Activity_main. После этого вызовите класс LoadingScreen следующим образом;

LoadingScreen loadingscreen = new LoadingScreen(loadingImage);
loadingscreen.setLoadScreen();

Я надеюсь, что это поможет вам

Ответ 5

public class Splash extends Activity {

    private final int SPLASH_DISPLAY_LENGHT = 3000;            //set your time here......

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);

        new Handler().postDelayed(new Runnable(){
            @Override
            public void run() {
                /* Create an Intent that will start the Menu-Activity. */
                Intent mainIntent = new Intent(Splash.this,MainActivity.class);
                Splash.this.startActivity(mainIntent);
                Splash.this.finish();
            }
        }, SPLASH_DISPLAY_LENGHT);
    }
}

Ответ 6

Если приложение ничего не делает за эти 10 секунд, это создаст плохую конструкцию, только чтобы пользователь подождал 10 секунд, ничего не делая.

Если в этом что-то происходит, или если вы хотите реализовать задержка заставки 10 секунд, вот код:

ProgressDialog pd;
pd = ProgressDialog.show(this,"Please Wait...", "Loading Application..", false, true);
pd.setCanceledOnTouchOutside(false);
Thread t = new Thread()
{ 
      @Override
      public void run()
      {
                try
                {
                    sleep(10000)  //Delay of 10 seconds
                } 
        catch (Exception e) {}
        handler.sendEmptyMessage(0);
        }
} ;
t.start();

//Handles the thread result of the Backup being executed.
private Handler handler = new Handler()
{
    @Override
    public void handleMessage(Message msg) 
    {
        pd.dismiss();
        //Start the Next Activity here...

    }
};

Ответ 7

Напишите код:

  @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);

        Thread welcomeThread = new Thread() {

            @Override
            public void run() {
                try {
                    super.run();
                    sleep(10000)  //Delay of 10 seconds
                } catch (Exception e) {

                } finally {

                    Intent i = new Intent(SplashActivity.this,
                            MainActivity.class);
                    startActivity(i);
                    finish();
                }
            }
        };
        welcomeThread.start();
    }