Android如何等待setTheme的过渡动画完成?

时间:2018-12-02 13:38:34

标签: java android kotlin material-design android-theme

编辑:好吧,这似乎是模拟器错误-_-,因为在实际设备上,它们根本没有问题。

我有两个活动。像这样启动时,主要活动称为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库)

我的问题是:

  1. 我如何等待该淡出动画结束?
  2. 此淡入淡出动画从何而来? (从我自己来说,我什么都没有设置)

0 个答案:

没有答案