编辑:好吧,这似乎是模拟器错误-_-,因为在实际设备上,它们根本没有问题。
我有两个活动。像这样启动时,主要活动称为SignInActivity:
import android.app.Activity
import android.content.Intent
import android.os.Bundle
class MainActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
setTheme(R.style.AppTheme)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
override fun onStart() {
super.onStart()
val token = TokenStore.getToken(this)
if (token == null) {
val intent = Intent(this, SignInActivity::class.java)
startActivity(intent)
}
}
}
我在应用程序的启动画面中使用了主题技巧。在AndroidManifest.xml
中,我通过样式设置了初始屏幕背景
<activity android:name=".MainActivity"
android:theme="@style/LauncherTheme">
初始屏幕主题
<style name="LauncherTheme" parent="Theme.MaterialComponents.NoActionBar">
<item name="android:windowBackground">@drawable/launch_screen</item>
<item name="android:colorPrimaryDark">@color/colorBackground</item>
</style>
在不启动登录活动的情况下使用主活动时,初始屏幕运行良好:主活动启动时,它用setTheme(R.style.AppTheme)
替换了普通活动主题,初始屏幕消失了淡入淡出动画的效果。问题是:如果存在用于启动SignInActivity的代码,则在启动SignInActivity时淡入淡出动画不会结束,这会中断淡入淡出过渡:我可以清楚地看到初始屏幕“闪烁”,并且动画很生涩。 >
请注意,我使用material component(新的androidx库)
我的问题是: