Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 根据共享首选项更改启动器活动_Android_Android Activity_Splash Screen - Fatal编程技术网

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

Android 根据共享首选项更改启动器活动,android,android-activity,splash-screen,Android,Android Activity,Splash Screen,我的应用程序有一个启动屏幕作为它的启动程序活动,并且我在共享首选项中有一个直接转到主活动的选项,因此我需要一种以编程方式选择启动程序活动的方法 我最初尝试使用在启动屏幕之前启动的另一个活动,并执行打开下一个活动的逻辑,如这里所建议的 但我发现即使在清单中声明了android:noHistory=true,在活动转换期间屏幕也会闪烁 相反,我将上面提到的活动中使用的相同简单逻辑添加到我最初的启动屏幕活动中,该活动根据共享的首选项设置屏幕内容。我使用了一个处理程序和一个postDelayed计时器,

我的应用程序有一个启动屏幕作为它的启动程序活动,并且我在共享首选项中有一个直接转到主活动的选项,因此我需要一种以编程方式选择启动程序活动的方法

我最初尝试使用在启动屏幕之前启动的另一个活动,并执行打开下一个活动的逻辑,如这里所建议的 但我发现即使在清单中声明了android:noHistory=true,在活动转换期间屏幕也会闪烁


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

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

只需使用:

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();

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

    overridePendingTransition(0, R.anim.anim_zoom_out);

谢谢,这基本上就是我的。我添加延迟是为了平滑活动之间的过渡,否则看起来很不和谐。有没有办法减少/消除这种情况?@MichaelM-H我不能完全理解。如果不适合在活动之间进行过渡,但应立即严格规定。动画切换屏幕时,您可以在Internet上查看动画示例。如果我理解这个问题。