根据共享首选项更改启动器活动

时间:2015-11-11 12:41:22

标签: android android-activity splash-screen

我的应用程序有一个启动画面作为其Launcher活动,我在共享首选项中有一个选项直接进入主活动,所以我需要一种方法以编程方式选择Launcher活动。

我最初尝试使用在启动屏幕之前启动的另一个活动,并执行打开下一个活动的逻辑,如Programmatically change launcher activity所示 但我发现在活动过渡期间屏幕闪烁,即使在清单中声明了android:noHistory =“true”。

相反,我将上述活动中使用的相同简单逻辑添加到我的原始启动画面活动中,该活动根据共享首选项设置屏幕内容。我使用一个处理程序和一个postDelayed计时器来决定启动画面的显示时间,作为一个实验,我将postDelayed时间设置得很低,100毫秒,并且在转换到主活动期间没有明显的屏幕闪烁。为什么会这样?

2 个答案:

答案 0 :(得分:0)

你做错了什么。您不需要使用延迟!

只需使用:

String MAIN_FLAG = "Your Flag here";

SharedPreferences prefs = this.getSharedPreferences(
      "com.example.app", Context.MODE_PRIVATE);
//Saving Data
prefs.edit().putString(MAIN_FLAG , "FLAG";
//Load Data (Second parameters is default value)
prefs.getString(MAIN_FLAG , "");

而不是你的飞溅:

if (this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE)
           .getString(MAIN_FLAG , "") != "") 
   loadFirstAcivity();
else 
   loadSecondActivity();

答案 1 :(得分:0)

您可以尝试使用带有0作为动画ID的Activity.overridePendingTransition()来显示平滑的事务。 例如:

    overridePendingTransition(0, R.anim.anim_zoom_out);