From 5c7783305a6f195a184c077bc17fdbd603366f00 Mon Sep 17 00:00:00 2001 From: macdonst Date: Tue, 19 Jun 2012 20:21:13 -0400 Subject: [PATCH] CB-883: SplashScreen without show() method, only hide() --- .../src/org/apache/cordova/DroidGap.java | 72 ++++++++++--------- .../src/org/apache/cordova/SplashScreen.java | 3 +- 2 files changed, 41 insertions(+), 34 deletions(-) diff --git a/framework/src/org/apache/cordova/DroidGap.java b/framework/src/org/apache/cordova/DroidGap.java index d4c142d3..a5e2a7d1 100755 --- a/framework/src/org/apache/cordova/DroidGap.java +++ b/framework/src/org/apache/cordova/DroidGap.java @@ -260,7 +260,7 @@ public class DroidGap extends Activity implements CordovaInterface { { getWindow().requestFeature(Window.FEATURE_NO_TITLE); } - + if(this.getBooleanProperty("setFullscreen", false)) { getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, @@ -866,7 +866,7 @@ public class DroidGap extends Activity implements CordovaInterface { } /** - * Launch an activity for which you would like a result when it finished. When this activity exits, + * Launch an activity for which you would like a result when it finished. When this activity exits, * your onActivityResult() method will be called. * * @param command The command object @@ -1088,40 +1088,46 @@ public class DroidGap extends Activity implements CordovaInterface { * Shows the splash screen over the full Activity */ @SuppressWarnings("deprecation") - protected void showSplashScreen(int time) { + protected void showSplashScreen(final int time) { + final DroidGap that = this; - // Get reference to display - Display display = getWindowManager().getDefaultDisplay(); - - // Create the layout for the dialog - LinearLayout root = new LinearLayout(this); - root.setMinimumHeight(display.getHeight()); - root.setMinimumWidth(display.getWidth()); - root.setOrientation(LinearLayout.VERTICAL); - root.setBackgroundColor(this.getIntegerProperty("backgroundColor", Color.BLACK)); - root.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, - ViewGroup.LayoutParams.FILL_PARENT, 0.0F)); - root.setBackgroundResource(this.splashscreen); - - // Create and show the dialog - splashDialog = new Dialog(this, android.R.style.Theme_Translucent_NoTitleBar); - // check to see if the splash screen should be full screen - if ((getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FULLSCREEN) - == WindowManager.LayoutParams.FLAG_FULLSCREEN) { - splashDialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, - WindowManager.LayoutParams.FLAG_FULLSCREEN); - } - splashDialog.setContentView(root); - splashDialog.setCancelable(false); - splashDialog.show(); - - // Set Runnable to remove splash screen just in case - final Handler handler = new Handler(); - handler.postDelayed(new Runnable() { + Runnable runnable = new Runnable() { public void run() { - removeSplashScreen(); + // Get reference to display + Display display = getWindowManager().getDefaultDisplay(); + + // Create the layout for the dialog + LinearLayout root = new LinearLayout(that.getActivity()); + root.setMinimumHeight(display.getHeight()); + root.setMinimumWidth(display.getWidth()); + root.setOrientation(LinearLayout.VERTICAL); + root.setBackgroundColor(that.getIntegerProperty("backgroundColor", Color.BLACK)); + root.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, + ViewGroup.LayoutParams.FILL_PARENT, 0.0F)); + root.setBackgroundResource(that.splashscreen); + + // Create and show the dialog + splashDialog = new Dialog(that, android.R.style.Theme_Translucent_NoTitleBar); + // check to see if the splash screen should be full screen + if ((getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FULLSCREEN) + == WindowManager.LayoutParams.FLAG_FULLSCREEN) { + splashDialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, + WindowManager.LayoutParams.FLAG_FULLSCREEN); + } + splashDialog.setContentView(root); + splashDialog.setCancelable(false); + splashDialog.show(); + + // Set Runnable to remove splash screen just in case + final Handler handler = new Handler(); + handler.postDelayed(new Runnable() { + public void run() { + removeSplashScreen(); + } + }, time); } - }, time); + }; + this.runOnUiThread(runnable); } /** diff --git a/framework/src/org/apache/cordova/SplashScreen.java b/framework/src/org/apache/cordova/SplashScreen.java index 9fca9b25..93ab6288 100644 --- a/framework/src/org/apache/cordova/SplashScreen.java +++ b/framework/src/org/apache/cordova/SplashScreen.java @@ -31,8 +31,9 @@ public class SplashScreen extends Plugin { String result = ""; if (action.equals("hide")) { - //((DroidGap)this.ctx).removeSplashScreen(); this.webView.postMessage("splashscreen", "hide"); + } else if (action.equals("show")){ + this.webView.postMessage("splashscreen", "show"); } else { status = PluginResult.Status.INVALID_ACTION;