Есть ли способ показать заставку во время onCreate? - PullRequest
1 голос
/ 17 августа 2011

Возможно, это не лучший подход, но мое приложение использует onCreate для загрузки / подготовки большого количества макетов в ViewAnimator, поэтому после запуска приложения у меня есть все экраны моего приложения, подготовленные к использованию. Таким образом, переключение между разными экранами происходит плавно и быстро.

Недостаток этого метода в том, что для появления первого макета требуется 5 секунд. Если быть точным - все экраны ViewAnimator определены в макете XML, и я полагаю, что они завышены во время onCreate.

Мое приложение должно иметь заставку, поэтому мой вопрос: есть ли способ использовать эти 5 секунд для показа изображения?

РЕДАКТИРОВАТЬ:

Благодаря вашим ответам я пришел к такому простому решению:

Activity activity;
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_splash);
    activity = this;
    LinearLayout splash_layout = (LinearLayout) this.findViewById(R.id.splash_layout);

    // after 1 second of splash screen, start initializing everything
    splash_layout.postDelayed(new Runnable() 
    {   
        public void run() 
        {
            activity.setContentView(R.layout.main);

            // Here init whole layout and all class
            // During initialization, the splashscreen is still visible
        }
    }, 1000);
}

Ответы [ 3 ]

2 голосов
/ 17 августа 2011

Я не верю, что какой-либо экран будет виден до тех пор, пока onResume не выйдет и основной поток не начнет обслуживать сообщения. Можете ли вы использовать 2 .xml макетов? Тот, который загружает заставку сразу при запуске, а затем начинает загружать остатки ваших экранов инфлятором макета после начала действия?

1 голос
/ 17 августа 2011

На вашем месте я бы переместил долгосрочные задачи из метода Activity.onCreate (), так как это может привести к ошибке ANR = приложение не отвечает, скажем, в другой поток.

0 голосов
/ 17 августа 2011

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

Проверьте этот вопрос для одного возможного решения: Android меняет макет динамически

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...