Fix screen flash when launching settings activity

Bug: 8336068
Change-Id: I90a0f259129a3f3319b158b060154cc43960c234
diff --git a/java/res/layout/setup_wizard.xml b/java/res/layout/setup_wizard.xml
index 176f836..87db4d0 100644
--- a/java/res/layout/setup_wizard.xml
+++ b/java/res/layout/setup_wizard.xml
@@ -19,6 +19,7 @@
 -->
 
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/setup_wizard"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@color/setup_background"
diff --git a/java/src/com/android/inputmethod/latin/setup/SetupWizardActivity.java b/java/src/com/android/inputmethod/latin/setup/SetupWizardActivity.java
index 8f6a2e5..3406ecf 100644
--- a/java/src/com/android/inputmethod/latin/setup/SetupWizardActivity.java
+++ b/java/src/com/android/inputmethod/latin/setup/SetupWizardActivity.java
@@ -46,6 +46,7 @@
 public final class SetupWizardActivity extends Activity implements View.OnClickListener {
     static final String TAG = SetupWizardActivity.class.getSimpleName();
 
+    private View mSetupWizard;
     private View mWelcomeScreen;
     private View mSetupScreen;
     private Uri mWelcomeVideoUri;
@@ -64,7 +65,7 @@
     private static final int STEP_LAUNCHING_IME_SETTINGS = 4;
     private static final int STEP_BACK_FROM_IME_SETTINGS = 5;
 
-    private final SettingsPoolingHandler mHandler = new SettingsPoolingHandler(this);
+    final SettingsPoolingHandler mHandler = new SettingsPoolingHandler(this);
 
     static final class SettingsPoolingHandler
             extends StaticInnerHandlerWrapper<SetupWizardActivity> {
@@ -104,10 +105,11 @@
 
     @Override
     protected void onCreate(final Bundle savedInstanceState) {
-        setTheme(android.R.style.Theme_DeviceDefault_Light_NoActionBar);
+        setTheme(android.R.style.Theme_Translucent_NoTitleBar);
         super.onCreate(savedInstanceState);
 
         setContentView(R.layout.setup_wizard);
+        mSetupWizard = findViewById(R.id.setup_wizard);
 
         RichInputMethodManager.init(this);
 
@@ -179,27 +181,28 @@
                 .authority(getPackageName())
                 .path(Integer.toString(R.raw.setup_welcome_video))
                 .build();
-        mWelcomeVideoView = (VideoView)findViewById(R.id.setup_welcome_video);
-        mWelcomeVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
+        final VideoView welcomeVideoView = (VideoView)findViewById(R.id.setup_welcome_video);
+        welcomeVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
             @Override
             public void onPrepared(final MediaPlayer mp) {
                 // Now VideoView has been laid-out and ready to play, remove background of it to
                 // reveal the video.
-                mWelcomeVideoView.setBackgroundResource(0);
+                welcomeVideoView.setBackgroundResource(0);
                 mp.setLooping(true);
             }
         });
         final ImageView welcomeImageView = (ImageView)findViewById(R.id.setup_welcome_image);
-        mWelcomeVideoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {
+        welcomeVideoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {
             @Override
             public boolean onError(final MediaPlayer mp, final int what, final int extra) {
                 Log.e(TAG, "Playing welcome video causes error: what=" + what + " extra=" + extra);
-                mWelcomeVideoView.setVisibility(View.GONE);
+                welcomeVideoView.setVisibility(View.GONE);
                 welcomeImageView.setImageResource(R.raw.setup_welcome_image);
                 welcomeImageView.setVisibility(View.VISIBLE);
                 return true;
             }
         });
+        mWelcomeVideoView = welcomeVideoView;
 
         mActionStart = findViewById(R.id.setup_start_label);
         mActionStart.setOnClickListener(this);
@@ -234,7 +237,7 @@
         }
     }
 
-    private void invokeSetupWizardOfThisIme() {
+    void invokeSetupWizardOfThisIme() {
         final Intent intent = new Intent();
         intent.setClass(this, SetupWizardActivity.class);
         intent.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
@@ -251,14 +254,14 @@
         startActivity(intent);
     }
 
-    private void invokeLanguageAndInputSettings() {
+    void invokeLanguageAndInputSettings() {
         final Intent intent = new Intent();
         intent.setAction(Settings.ACTION_INPUT_METHOD_SETTINGS);
         intent.addCategory(Intent.CATEGORY_DEFAULT);
         startActivity(intent);
     }
 
-    private void invokeSubtypeEnablerOfThisIme() {
+    void invokeSubtypeEnablerOfThisIme() {
         final InputMethodInfo imi =
                 RichInputMethodManager.getInstance().getInputMethodInfoOfThisIme();
         final Intent intent = new Intent();
@@ -318,6 +321,8 @@
     protected void onResume() {
         super.onResume();
         if (mStepNumber == STEP_LAUNCHING_IME_SETTINGS) {
+            // Prevent white screen flashing while launching settings activity.
+            mSetupWizard.setVisibility(View.INVISIBLE);
             invokeSettingsOfThisIme();
             mStepNumber = STEP_BACK_FROM_IME_SETTINGS;
             return;
@@ -360,6 +365,7 @@
     }
 
     private void updateSetupStepView() {
+        mSetupWizard.setVisibility(View.VISIBLE);
         final boolean welcomeScreen = (mStepNumber == STEP_WELCOME);
         mWelcomeScreen.setVisibility(welcomeScreen ? View.VISIBLE : View.GONE);
         mSetupScreen.setVisibility(welcomeScreen ? View.GONE : View.VISIBLE);