2010-02-08 2 views
18

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

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

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

+4

Вы знаете, что заставка не помогает ни с чем, кроме того, что ваше приложение запускается еще медленнее ... пожалуйста, не используйте их. – Johan

+0

Я считаю, что его недостатки сильно перевешивают любые преимущества, которые вы могли бы получить от заставки. –

+21

Я не вижу никаких недостатков, вместо того, чтобы смотреть на черный экран на 2 или 3 секунды (или дольше), вы смотрите на изображение, гораздо приятнее, на мой взгляд, по крайней мере, вы знаете, что приложение запустилось. – pambuk

ответ

35

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

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

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

Вот скелет кода:


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

    } 
} 

надежда, что помогает!

+1

Проблема решена, спасибо :) – pambuk

+1

Ultimate :) спасибо – Naruto

+0

Привет, что делать, если у меня есть несколько каналов и вы хотите начать загрузку второй загрузки ПОСЛЕ первой подачи завершается и отображается в первом действии. Как сделать одновременные потоки в этом примере? – Zac

1

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

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

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

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