Сплеш-layout и загрузка приложения

249
31 марта 2017, 23:02

Есть два relativeLayout

  1. splashRelativeLayout
  2. playzoneRelativeLayout

Написал такой код, чтобы splashRelativeLayout выходил как сплэш в начале загрузки приложения на 5 секунд.

@Override
protected void onResume() {
    super.onResume();
    splashRelativeLayout.setVisibility(View.VISIBLE);
    playzoneRelativeLayout.setVisibility(View.INVISIBLE);
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            splashRelativeLayout.setVisibility(View.INVISIBLE);
            playzoneRelativeLayout.setVisibility(View.VISIBLE);
        }
    },5000);
}

Но, перед тем как splashRelativeLayout появится на экране программа показывает белое окошко - ждет пока загрузится все приложение и только потом показывает splashRelativeLayout.
Как сделать так, чтобы приложение сразу первым делом показал splashRelativeLayout, а потом только не спеша загружал все остальные лайоуты.

Answer 1

Сделайте отдельную SplashActivity, которая будет LAUNCHER в манифесте:

    <activity android:name=".ui.splash.SplashActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

Показывайте в ней свой сплэш-лэйаут:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splashRelativeLayout);
}

Ну и в onResume пропишите свой хэндлер с задержкой показа:

@Override
protected void onResume() {
    super.onResume();
    // запустите основную активити после задержки
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            Intent intent = new Intent(SplashActivity.this, MainActivity.class);
            SplashActivity.this.startActivity(intent);
            SplashActivity.this.finish();
            // можно добавить какую-либо анимацию при закрытии сплэш - к примеру, исчезновение
            SplashActivity.this.overridePendingTransition(R.anim.fade_in_activity, R.anim.fade_out_activity);
        }
    },5000);
}

res/anim/fade_in_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:fromAlpha="0.0" android:toAlpha="1.0"
    android:duration="1000" />

res/anim/fade_out_activity.xml

<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:fromAlpha="1.0" android:toAlpha="0.0"
    android:fillAfter="true"
    android:duration="1000" />
READ ALSO
Java - Как проверить причину вылета программы

Java - Как проверить причину вылета программы

Как проверить ошибку в приложении на адроиде? К примеру, если программа вылетает на определенном моменте, как проследить? Слышал, что остаются...

290
хочу научиться писать автотесты [требует правки]

хочу научиться писать автотесты [требует правки]

хочу начать писать автотесты на java (selenium)скажите, с чего начать новичку, и посоветуете ли какой-то план обучения ?

225
spring mongorepository поиск по ключевым словам

spring mongorepository поиск по ключевым словам

Как можно вытащить из базы документ по списку ключевых слов? Каждое ключевое слово должно сравниваться с текстом всего докуменаДолжен вернуться...

247
Не получается вытащить фото человека из VK

Не получается вытащить фото человека из VK

Вытащил список друзей в лист VKList<VKApiUserFull> list; , вызываю метод photo50 - listget(position)

311