Jak zrobić ekran powitalny (ekran widoczny po uruchomieniu aplikacji)?

Mam prostą aplikację, uruchamia się, ładuje XML feed z sieci, można przeglądać listę newsów, a następnie czytać szczegóły wybranego newsa. To, co chciałbym zrobić, to mieć ekran powitalny, co oznacza, że jak tylko klikniesz aplikację, powinien wyświetlić obraz (Nazwa aplikacji w moim przypadku), a następnie wyświetlić listę wiadomości dopiero po załadowaniu.

Czytałem o podobnych (chyba) problemach i zazwyczaj ludzie mówią, aby używać FrameLayout, ale naprawdę nie mogę tego rozwiązać. Nie jestem pewien, czy to można to zrobić w pierwszej aktywności, która jest uruchomiona, może powinienem po prostu wyświetlić ten obraz powitalny w jednym działaniu i dopiero wtedy wywołać aktywność wyświetlającą moją listę wiadomości?

Wiem, że na iPhonie można ustawić ekran powitalny w ustawieniach aplikacji podczas tworzenia, byłoby miło mieć tę funkcjonalność w manifeście aplikacji Androida...

Author: pambuk, 2010-02-08

2 answers

Android sugeruje skorzystanie z ekranu powitalnego podczas wykonywania długich obliczeń przy starcie. Oto fragment strony programisty Androida-Projektowanie dla responsywności:

" jeśli Twoja aplikacja ma czasochłonną początkową fazę konfiguracji, rozważ pokazanie ekranu powitalnego lub renderowanie widoku głównego tak szybko, jak to możliwe i asynchronicznie uzupełnianie informacji. W obu przypadkach należy w jakiś sposób zaznaczyć, że postęp jest dokonywany, aby użytkownik zobacz, że aplikacja jest zamrożona."--Android Developer Site

Możesz utworzyć aktywność, która wyświetla okno postępu podczas korzystania z Asynktasku, aby pobrać kanał xml z sieci, przetworzyć go, zapisać go do bazy danych (w razie potrzeby), a następnie rozpocząć aktywność, która wyświetla kanały wiadomości. Zamknij działanie splash wywołując finish ()

Oto kod szkieletu:


public class SplashScreen extends Activity{
   @Override
   public void onCreate(Bundle savedInstanceState){
      super.onCreate(savedInstanceState);
      // set the content view for your splash screen you defined in an xml file
      setContentView(R.layout.splashscreen);

      // perform other stuff you need to do

      // execute your xml news feed loader
      new AsyncLoadXMLFeed().execute();

   }

   private class AsyncLoadXMLFeed extends AsyncTask<Void, Void, Void>{
      @Override
      protected void onPreExecute(){
            // show your progress dialog

      }

      @Override
      protected Void doInBackground(Void... voids){
            // load your xml feed asynchronously
      }

      @Override
      protected void onPostExecute(Void params){
            // dismiss your dialog
            // launch your News activity
            Intent intent = new Intent(SplashScreen.this, News.class);
            startActivity(intent);

            // close this activity
            finish();
      }

   }
}
Mam nadzieję, że to pomoże!
 35
Author: jagsaund,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-09 03:37:42

Wiem, że jest to stare, ale dla tych z Was, którzy wciąż borykają się z tym problemem, możesz użyć tej prostej android-splash library, aby pokazać swój ekran powitalny.

SplashBuilder
        .with(this, savedInstanceState)
        .show();

Możesz ustawić SplashTask, która będzie działać podczas wyświetlania ekranu powitalnego.

 2
Author: Tomer Hadad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-03 10:41:42