如何在AndroidKotlin中完成闪屏API执行后基于身份验证将用户导航到特定屏幕

jckbn6z7  于 2023-08-06  发布在  Kotlin
关注(0)|答案(2)|浏览(125)

我已经将Android的新闪屏API集成到我的应用程序中。现在,如果用户已登录,我希望将用户重定向到登录屏幕,如果用户未登录,则重定向到注册屏幕,一旦启动屏幕API执行完成。
这是我为闪屏API定义的主题

<style name="Theme.CustomSplashScreen" parent="Theme.SplashScreen">
        <item name="windowSplashScreenAnimatedIcon">@drawable/splash_logo</item>
        <item name="windowSplashScreenAnimationDuration">5000</item>
        <item name="postSplashScreenTheme">@style/Theme.SanskarEducation</item>
    </style>

字符串
下面是该活动的代码

@RequiresApi(Build.VERSION_CODES.S)
    override fun onCreate(savedInstanceState: Bundle?) {
        val splash = installSplashScreen()
        splash.setKeepOnScreenCondition { false }
        setupSplashScreen()
        super.onCreate(savedInstanceState)
        binding = DataBindingUtil.setContentView(this, R.layout.activity_login)
        initialSetup()
    }

    @RequiresApi(Build.VERSION_CODES.S)
    private fun setupSplashScreen() {
        splashScreen.setOnExitAnimationListener { splashScreenView ->
            val slideUp = ObjectAnimator.ofFloat(
                splashScreenView,
                View.TRANSLATION_Y,
                0f,
                -splashScreenView.height.toFloat()
            )
            slideUp.interpolator = AnticipateInterpolator()
            slideUp.duration = 800L
            slideUp.doOnEnd { splashScreenView.remove() }
            slideUp.start()
        }
    }


我也试过使用下面的代码,但它没有工作。它总是重定向到登录屏幕。

val splash = installSplashScreen()
splash.setKeepOnScreenCondition { false }


我想知道在哪里可以放置我的条件来检查用户是否登录,以便我可以将用户重定向到特定的屏幕。
先谢谢你了

c6ubokkw

c6ubokkw1#

您可以在此Launcher练习的onCreate中执行此操作。因此,当用户看到启动画面时,您可以进行API调用并决定打开哪个Activity。

@RequiresApi(Build.VERSION_CODES.S)
override fun onCreate(savedInstanceState: Bundle?) {
    navigateToCorrectScreen()
    val splash = installSplashScreen()
    splash.setKeepOnScreenCondition { false }
    setupSplashScreen()
    super.onCreate(savedInstanceState)
    binding = DataBindingUtil.setContentView(this, R.layout.activity_login)
    initialSetup()
}

字符串
而在navigateToCorrectScreen中你可以进行API调用并决定要打开的活动,比如,

private fun navigateToCorrectScreen() {
    val isLoggedIn = false // Implement your login status check here
    val targetActivity = if (isLoggedIn) {
        // User is logged in, redirect to the main activity
        MainActivity::class.java
    } else {
        // User is not logged in, redirect to the login activity
        LoginActivity::class.java
    }
    val intent = Intent(this, targetActivity)
    startActivity(intent)
    finish() // Finish the splash screen activity
}


现在,如果您认为可能会出现闪屏消失但未收到API响应的情况,您可以通过多种方式进行管理。下面列出了一些方法。
1.您可以检查是否只有在API响应后才能删除闪屏
1.您可以显示进度或图标相同的飞溅到该活动,而你收到的回应,并决定去哪里。

cyvaqqii

cyvaqqii2#

我发现了自己的错误。我刚刚从代码中删除了splash.setKeepOnScreenCondition { false },并添加了一个条件来检查用户是否已经登录,它是否正常工作。
我们只需要在installSplashScreen()后面添加一个条件。更新后的代码如下所示

installSplashScreen()
    firebaseAuth = Firebase.auth
    if (firebaseAuth.currentUser != null) {
       navigateToAndFinish<DashboardActivity>()
    }
    setupSplashScreen()
    super.onCreate(savedInstanceState)
    binding = DataBindingUtil.setContentView(this, R.layout.activity_login)
    initialSetup()

字符串
我已经添加了如果条件,以检查用户是否登录或没有。

相关问题