Как сделать заставку (экран виден при запуске приложения)?
У меня есть простое приложение, оно запускается, загружает 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
это будет выполняться во время отображения заставки.