CB-883: SplashScreen without show() method, only hide()
Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/commit/5c778330 Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/tree/5c778330 Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/diff/5c778330 Branch: refs/heads/master Commit: 5c7783305a6f195a184c077bc17fdbd603366f00 Parents: 6c594b6 Author: macdonst <[email protected]> Authored: Tue Jun 19 20:21:13 2012 -0400 Committer: macdonst <[email protected]> Committed: Tue Jun 19 20:21:13 2012 -0400 ---------------------------------------------------------------------- framework/src/org/apache/cordova/DroidGap.java | 72 ++++++++------- framework/src/org/apache/cordova/SplashScreen.java | 3 +- 2 files changed, 41 insertions(+), 34 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/5c778330/framework/src/org/apache/cordova/DroidGap.java ---------------------------------------------------------------------- diff --git a/framework/src/org/apache/cordova/DroidGap.java b/framework/src/org/apache/cordova/DroidGap.java index d4c142d..a5e2a7d 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) { - - // Get reference to display - Display display = getWindowManager().getDefaultDisplay(); + protected void showSplashScreen(final int time) { + final DroidGap that = this; - // 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); } /** http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/5c778330/framework/src/org/apache/cordova/SplashScreen.java ---------------------------------------------------------------------- diff --git a/framework/src/org/apache/cordova/SplashScreen.java b/framework/src/org/apache/cordova/SplashScreen.java index 9fca9b2..93ab628 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;
