2013-06-28 4 views
16

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

+1

и можно использовать диалоговое окно полного экрана или вы можете использовать всплеск screen.when ваш процесс начинается показывать диалоговое окно и когда он заканчивается отклонить его. – TheFlash

+0

Я думаю, эта ссылка поможет вам: http://stackoverflow.com/questions/15452061/android-splash-screen. Удачи! –

+2

Вместо экрана-заставки вы рассмотрели некоторые поддельные данные, некоторые учебные пособия, 10-секундный всплывающий экран закроет ваше приложение и будет действительно разочаровывающим для пользователя: http://cyrilmottier.com/2012/05/03/splash- screen-are-evil-dont-use-them/ –

ответ

24

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

@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(); 
    } 

Надежда этот код поможет вам.

+0

Спасибо за это, хотя кажется, что нет необходимости в int wait = 0, так как переменная никогда не используется. –

+1

@DavidG Спасибо за указание. :) Я отредактировал его –

+1

позволяет сказать, что вы открываете это приложение, и после 5-х вы его оставляете, а затем еще через 5 секунд приложение показывает снова, потому что оно начинает основное действие. Не забывайте отменить это как-то, когда вы покидаете экран приложения/поворота и т. Д. – RadekJ

32

использование ProgressDialog.

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

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

dialog.hide(); 
+1

Идеальное решение , Спасибо! – HanClinto

1
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); 
    } 
} 
1

Если приложение не делает ничего в течение 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... 

    } 
}; 
0

Написать код:

@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(); 
    } 
3

Вы можете создайте пользовательский экран загрузки вместо заставки. если вы показываете заставку в течение 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, вы можете передать в класс LoadingScreen, как это: -

private ImageView loadingImage; 

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

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

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

4

Please read this article

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

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

заставок правильный путь

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

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

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

enter image description here

Смежные вопросы