Пытаюсь сделать splash screen, но оно ломает мне проект и сама не показывается в Android
Задача сделать SplashScreen как в ютубе/вконтакте и других приложениях. Но оно не показывается и в процессе она сломала мне ImageSwitcher из активити и она больше не показывает никаких картинок. Я следовал этим статьям и я не знаю что я не так сделал:
Я пробовал каждый из вариантов, но либо оно не запускается, либо не показывается.
- Вот моя разметка:
- background_splash.xml, тут указана сама тема
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque">
<!-- Цвет фона, предпочтительно как в главной теме -->
<!-- Лого приложения - 144dp версия иконки приложения -->
<item>
<bitmap
android:src="@mipmap/ic_launcher"
android:gravity="center"/>
</item>
</layer-list>
посередине стоит значок приложения, а в заднем фоне должен быть задний фон, но я ее убрал когда пытался отладить.
и в styles.xml моя тема объявляется под именем AppTheme.Launcher:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar" /> <style name="AppTheme.Launcher"> <item name="android:windowBackground">@drawable/background_splash</item> </style>в манифесте указана моя тема на intent-filter
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.InSport"> <activity android:name=".ChatOneToOne"></activity> <activity android:name=".MsgCenter" /> <activity android:name=".addToTeam" /> <activity android:name=".inTeam" /> <activity android:name=".Team" /> <activity android:name=".ShowTurnirs" /> <activity android:name=".Profile.Info" /> <activity android:name=".Profile.friendsRequest" /> <activity android:name=".Profile.training" /> <activity android:name=".Profile.EnemyProfile" /> <activity android:name=".findtest" /> <activity android:name=".Sign.LoadFrame" android:theme="@style/AppTheme.Launcher"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Sign.BackFrame" /> <activity android:name=".Profile.ProfileEdit" /> <activity android:name=".Profile.Friends" /> <activity android:name=".HomeNav" android:label="@string/title_activity_home_nav" android:theme="@style/Theme.InSport.NoActionBar" /> <activity android:name=".Sign.SignUp" /> <activity android:name=".Sign.SignIn" /> </application>а дальше в LoadActivity, в первом активити которое запускается в OnCreate указана основная тема согласно статье:
public class LoadFrame extends AppCompatActivity { private ImageSwitcher mImageSwitcher; @Override protected void onCreate(Bundle savedInstanceState) { setTheme(R.style.Theme_InSport); super.onCreate(savedInstanceState); setContentView(R.layout.load_frame); getSupportActionBar().hide(); FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); if (user != null){ startActivity(new Intent(LoadFrame.this, HomeNav.class)); finish(); } mImageSwitcher = findViewById(R.id.imageSwitcher); Animation inAnimation = new AlphaAnimation(0, 1); inAnimation.setDuration(1000); Animation outAnimation = new AlphaAnimation(1, 0); outAnimation.setDuration(1000); mImageSwitcher.setInAnimation(inAnimation); mImageSwitcher.setOutAnimation(outAnimation); //cw.setOnClickListener(v -> ); if (user == null) { Thread t = new Thread(new Runnable() { public void run() { try { TimeUnit.SECONDS.sleep(2); mImageSwitcher.postDelayed(runn1, 1000); TimeUnit.SECONDS.sleep(3); runOnUiThread(runn2); } catch (InterruptedException e) { e.printStackTrace(); } } }); t.start(); } } Runnable runn1 = new Runnable() { public void run() { mImageSwitcher.showNext(); } }; Runnable runn2 = new Runnable() { public void run() { startActivity(new Intent(LoadFrame.this, BackFrame.class)); } }; @Override protected void onResume() { super.onResume(); new Handler().postDelayed(new Runnable() { @Override public void run() { //startActivity(new Intent(LoadFrame.this, BackFrame.class)); /*new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(LoadFrame.this, BackFrame.class)); } });*/ } }, 2000); /* Handler end; end = new Handler(); end.postDelayed(new Runnable() { @Override public void run() { } }, 3000);*/ } }
Если что то не понятно обращайтесь пожалуйста ибо я и сам не понимаю что не так