我试图在我的应用中实施一次性EULA和密码创建屏幕。
我努力做到尽可能干净无缝。我当前的实施涉及需要设置的SharedPreference,如果不是,则应显示EULA和密码创建屏幕。
/**
*
* @param context
* @return
*/
public static boolean isFirstLaunch(Context context) {
SharedPreferences reader = context.getSharedPreferences(
PREFERENCES, Context.MODE_PRIVATE);
String apiKey = reader.getString(APIKEY, "");
return apiKey == "";
}
当用户完成接受EULA并创建密码时,将设置API密钥。但是我看到之前的活动仍在发布/动画。所以我一直在尝试删除第一个活动的动画,但是还没有运气。
在活动中:
@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
if (InitialLoading.isFirstLaunch(this)) {
Intent intent = new Intent(this, EndUserAgreementActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
//getWindow().setWindowAnimations(0);
overridePendingTransition(0,0);
finish();
return;
}
if (InitialLoading.isPasswordLoginEnabled(this)) {
}
Intent intent = new Intent(this, OverviewActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_NO_HISTORY|Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
finish();
}
你们是否知道如何让它看起来好像在所有场景中只启动了一项活动:
当我尝试启动EULA时,我目前仍然看到上一个活动的闪烁。我已经检查了Whatsapp,并且该应用确实在启动非EULA活动时显示闪烁,所以我想知道这是否可行。
我已经有一个设置屏幕,如果身份验证选项保持启用状态,将禁用将启动的密码屏幕,因此不必担心。
无论如何,谢谢你的帮助。
答案 0 :(得分:1)
您可以看一下Fragments的概念。 我们的想法是将您的活动的UI拆分为可重用的碎片,这些碎片可以在运行时互换。
因此,在onCreate
方法中,您可以检查是否需要EULA屏幕,然后对相应的EULA片段进行充气,或者在另一种情况下显示密码ui Fragment。
这应该通过避免开始新的活动而有利于重用活动的活动来减少闪烁。