这个小功能搞了小半天,查了网上的案例多数没达到效果。
1. build引入
implementation 'androidx.core:core-splashscreen:1.0.0-beta02'
2. 定义主题
<style name="Theme.App.Starting" parent="Theme.SplashScreen">
<item name="windowSplashScreenAnimationDuration">3000</item>
<item name="android:windowBackground">@drawable/splash_screen_background</item>
<item name="postSplashScreenTheme">@style/AppTheme.NoActionBar</item>
</style>
3. mainfest.xml设置
<activity
android:name=".page.merch.MainActivity"
android:theme="@style/Theme.App.Starting"
android:fitsSystemWindows="true"
android:screenOrientation="portrait"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
4.activity 设置
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
isReady=true;
}
}, 1000);
final View content = findViewById(android.R.id.content);
content.getViewTreeObserver().addOnPreDrawListener(
new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
// Check if the initial data is ready.
if (isReady) {
// The content is ready; start drawing.
content.getViewTreeObserver().removeOnPreDrawListener(this);
return true;
} else {
// The content is not ready; suspend.
return false;
}
}
});
BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_navigation);
NavController controller = Navigation.findNavController(this, R.id.nav_host_fragment);
//在选择菜单时调用,当目的地更改时,BottomNavigationView中的选定项将自动更新
NavigationUI.setupWithNavController(bottomNavigationView, controller);
}
5. 达到理想效果,可以保证延长启动页保留时长