When the exit animation of the Android 12 Splash Screen ends it adds some extra space below the BottomNavigationView as shown in the screenshots below
While the Splash Screen's exit animation is running
When the Splash Screen's exit animation is over
activity_main_2.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white">
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/main_bottom_navigation"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:labelVisibilityMode="labeled"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:menu="@menu/main_navigation_menu">
</com.google.android.material.bottomnavigation.BottomNavigationView>
</androidx.constraintlayout.widget.ConstraintLayout>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="prateek_gupta.physical_device_tester">
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/SplashScreen"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:theme="@style/SplashScreen"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
splash_screen.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="SplashScreen" parent="Theme.SplashScreen">
<item name="windowSplashScreenBackground">@color/black</item>
<item name="windowSplashScreenAnimatedIcon">@drawable/splash_screen_logo_animation</item>
<item name="windowSplashScreenAnimationDuration">1000</item>
<item name="postSplashScreenTheme">@style/Theme.PhysicalDeviceTester</item>
</style>
</resources>
MainActivity.java
package prateek_gupta.physical_device_tester;
import android.os.Bundle;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.splashscreen.SplashScreen;
import androidx.core.splashscreen.SplashScreenViewProvider;
import prateek_gupta.physical_device_tester.databinding.ActivityMain2Binding;
public class MainActivity extends AppCompatActivity {
ActivityMain2Binding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
SplashScreen splashScreen = SplashScreen.installSplashScreen(this);
splashScreen.setOnExitAnimationListener(new SplashScreen.OnExitAnimationListener() {
@Override
public void onSplashScreenExit(@NonNull SplashScreenViewProvider splashScreenViewProvider) {
TranslateAnimation rightTranslateAnimation=new TranslateAnimation(Animation.RELATIVE_TO_PARENT,0f,Animation.RELATIVE_TO_PARENT,-1f,Animation.RELATIVE_TO_PARENT,0,Animation.RELATIVE_TO_PARENT,0f);
rightTranslateAnimation.setDuration(1000);
//rightTranslateAnimation.setFillAfter(true);
rightTranslateAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
splashScreenViewProvider.remove();
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
splashScreenViewProvider.getView().startAnimation(rightTranslateAnimation);
}
});
super.onCreate(savedInstanceState);
binding=ActivityMain2Binding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
}
}
So my question is how can I get rid of that extra space??
The issue is there with the dependency, so in the app/build.gradle file change the dependency from
dependencies {
...
implementation 'androidx.core:core-splashscreen:1.0.0-alpha02'
}
to
dependencies {
...
implementation 'androidx.core:core-splashscreen:1.0.0'
}