Как создать заставку (экран отображается, когда приложение запускается)?

У меня есть простое приложение, оно начинается, загружает XML-канал из сети, вы можете просматривать список новостей, а затем читать информацию для выбранного новостного материала. Что бы я хотел сделать, так это иметь заставку, то есть сразу после нажатия приложения она должна отображать изображение (имя приложения в моем случае), а затем отображать список новостей только после их загрузки.

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

Я знаю, что на iPhone вы можете установить заставку в настройках приложения во время разработки, было бы неплохо иметь эту функциональность в манифесте приложения Android...

Ответ 1

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

"Если у вашего приложения есть отработанная начальная фаза установки, подумайте о том, чтобы отобразить заставку или сделать основной вид как можно быстрее и заполнить информацию асинхронно. В любом случае вы должны как-то указать, что прогресс, чтобы пользователь не заметил, что приложение заморожено". - Сайт разработчика Android

Вы можете создать операцию, которая показывает диалоговое окно "Выполнение" при использовании AsyncTask для загрузки фида xml из сети, его синтаксического анализа, сохранения его в db (если необходимо), а затем запускает Activity, который отображает "Ленты новостей". Закройте действие всплеска, вызвав finish()

Здесь скелетный код:


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

   }
}

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

Ответ 2

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

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

Вы можете установить SplashTask, который будет выполняться во время отображения заставки.