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

У меня есть простое приложение, оно запускается, загружает XML-канал ИЗ СЕТИ, вы можете просмотреть список новостей, а затем прочитать детали для выбранного элемента новостей. То, что я хотел бы сделать, это иметь заставку, то есть, как только вы нажмете приложение, оно должно отображать изображение (имя приложения в моем случае), а затем отображать список новостей только после их загрузки.

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

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

2 ответов


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

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

вы можете создать действие, которое показывает диалог выполнения при использовании AsyncTask для загрузки XML-канала из сети, его анализа, хранения в БД (при необходимости), а затем запустить действие, которое отображает Ленты Новостей. Закройте действие splash, вызвав 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();
      }

   }
}

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


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

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

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