Как сделать заставку (экран виден при запуске приложения)? - PullRequest
18 голосов
/ 08 февраля 2010

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

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

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

Ответы [ 2 ]

35 голосов
/ 09 февраля 2010

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

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

Вы можете создать действие, которое отображает диалог хода выполнения, используя AsyncTask для загрузки XML-канала из сети, его анализа, сохранения в базе данных (при необходимости), а затем запускайте действие, которое отображает каналы новостей. Закройте всплывающее окно с помощью метода 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 голосов
/ 03 июня 2017

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

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

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

...