【发布时间】:2018-11-30 22:27:07
【问题描述】:
我有一个欢迎活动,只有在用户未登录时才会显示。 我所做的是通过意图开始一项新活动。 (我检查,如果用户登录,然后开始活动)。但是,在重定向之前,此活动仍然可见的瞬间。有没有办法避免这种情况?
【问题讨论】:
-
您可以考虑使用自定义
DialogFragment进行登录。然后当用户成功登录时允许访问主要活动。
标签: android
我有一个欢迎活动,只有在用户未登录时才会显示。 我所做的是通过意图开始一项新活动。 (我检查,如果用户登录,然后开始活动)。但是,在重定向之前,此活动仍然可见的瞬间。有没有办法避免这种情况?
【问题讨论】:
DialogFragment 进行登录。然后当用户成功登录时允许访问主要活动。
标签: android
只需使用相同的Activity,然后对Fragment 中的任何一个进行充气...结果:零延迟。
这也可以通过 .setContentView() 方法和两个 XML 布局来完成。
显示它没有意义,而用户在那里无事可做......
根据经验:跳过所有无用的复杂性(如其他人建议的那样)。
【讨论】:
我说使用闪屏。将用户数据保存在共享首选项中,并在打开活动中进行检查。它应该是一个只有共享首选项代码的空白活动,xml 中没有任何内容可能只是一个空布局或空间,但它应该使用style,其中android:windowBackground 是您的启动屏幕徽标。加载活动时,窗口背景是一种占位符。这样,总会有一个没有滞后的启动屏幕徽标。进行检查后,将用户引导至登录活动或家庭活动。离开前别忘了finish();这个活动。
风格:
<style name="splash" parent="AppTheme.NoActionBar">
<item name="android:windowBackground">@drawable/splash_wallpaper</item>
</style>
在 Manifest 中应用主题:
<activity
android:name=".activities.SplashActivity"
android:theme="@style/splash">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
由于splash_wallpaper 在不同屏幕上的显示可能不同,因此请使用可绘制的 xml 来定义其重力。
splash_wallpaper.xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap
android:gravity="fill"
android:src="@drawable/loading"/>
</item>
</layer-list>
【讨论】:
我认为使用共享偏好来检查用户登录是否登录,然后共享偏好值 true 并在每次开始后检查共享偏好。
注意:打开的活动应该是开始活动检查用户在开始活动中如果为假则重定向欢迎屏幕。
例如。应该对你有帮助
https://www.androidhive.info/2012/08/android-session-management-using-shared-preferences/
【讨论】: