#android #kotlin #splash-screen
#Android #kotlin #заставка
Вопрос:
Когда я открываю приложение, отображается заставка, а затем появляется черный экран (всего на 1 секунду), а затем переходит к действию. Как я могу избежать этого черного экрана?
Я установил заставку в качестве темы.
class SplashActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (sharedPrefs.isUserLogged) {
startActivity(intentFor<MainActivity>().clearTask().newTask())
}else{
startActivity(intentFor<LoginActivity>().clearTask().newTask())
}
finish()
}
}
Я установил стиль заставки на своем AndroidManifest.xml
<activity android:name=".view.splash.SplashActivity"
android:theme="@style/AppTheme.Launch">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
и в моем стиле я установил для фона возможность рисования.
<style name="AppTheme.Launch">
<item name="android:windowBackground">@drawable/my_splash</item>
</style>
Комментарии:
1. пробовал <название элемента=»android: windowDisablePreview»> true</item>?
2. Почему вы не устанавливаете возможность рисования в макете действия заставки? Возможно, изменение стилей вызывает задержку.
3. @ShwetaChauhan да, но это пропускает заставку
4. @underoid Я следовал этому руководству android.jlelse.eu/… Если я установлю режим рисования в макете, перед заставкой будет белый экран, а черного экрана не будет.
5. Попробуйте установить одинаковый стиль для действий Main и Login и убедитесь, что их расположение охватывает весь экран. Я предполагаю, что таким образом, пока создается второе действие, вы будете продолжать видеть всплывающую панель вместо черного экрана.
Ответ №1:
Через некоторое время я нашел решение:
class SplashActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Timer().schedule(1000) {
if (sharedPrefs.isUserLogged) {
startActivity(intentFor<MainActivity>().clearTask().newTask())
}else{
startActivity(intentFor<LoginActivity>().clearTask().newTask())
}
}
}
}
и я установил тему следующим образом:
<style name="AppTheme.Launch">
<item name="android:windowBackground">@drawable/my_splash</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>