Merge branch 'master' of ssh://github.com/ldeluca/cordova-plugin-splashscreen into CB-6773cordova-plugin-splashscreen

This commit is contained in:
ldeluca 2014-05-30 09:52:46 -04:00
commit b109c7f234
3 changed files with 108 additions and 12 deletions

View File

@ -60,11 +60,7 @@ Dismiss the splash screen.
navigator.splashscreen.hide();
### BlackBerry 10 Quirk
The `config.xml` file's `AutoHideSplashScreen` setting must be `false`.
### iOS Quirk
### BlackBerry 10, WP8, iOS Quirk
The `config.xml` file's `AutoHideSplashScreen` setting must be
`false`. To delay hiding the splash screen for two seconds, add a

View File

@ -89,6 +89,7 @@
<config-file target="config.xml" parent="/*">
<feature name="SplashScreen">
<param name="wp-package" value="SplashScreen"/>
<param name="onload" value="true"/>
</feature>
</config-file>
@ -101,6 +102,7 @@
<config-file target="config.xml" parent="/*">
<feature name="SplashScreen">
<param name="wp-package" value="SplashScreen"/>
<param name="onload" value="true"/>
</feature>
</config-file>

View File

@ -26,6 +26,11 @@ using Microsoft.Phone.Info;
using System.Windows.Controls.Primitives;
using System.Diagnostics;
using System.Windows.Media.Imaging;
using System.Windows.Resources;
using System.IO;
using System.Xml.Linq;
using System.Linq;
using System.Windows.Threading;
namespace WPCordovaClassLib.Cordova.Commands
{
@ -36,6 +41,9 @@ namespace WPCordovaClassLib.Cordova.Commands
public class SplashScreen : BaseCommand
{
private Popup popup;
private bool autohide = true;
private static bool WasShown = false;
public SplashScreen()
{
@ -45,24 +53,114 @@ namespace WPCordovaClassLib.Cordova.Commands
SplashScreen.Source = splash_image;
// Instansiate the popup and set the Child property of Popup to SplashScreen
this.popup = new Popup() {IsOpen = false, Child = SplashScreen };
popup = new Popup() {IsOpen = false, Child = SplashScreen };
// Orient the popup accordingly
this.popup.HorizontalAlignment = HorizontalAlignment.Stretch;
this.popup.VerticalAlignment = VerticalAlignment.Center;
popup.HorizontalAlignment = HorizontalAlignment.Stretch;
popup.VerticalAlignment = VerticalAlignment.Center;
LoadConfigValues();
}
public void show(string options)
public override void OnInit()
{
// we only want to autoload the first time a page is loaded.
if (!WasShown)
{
WasShown = true;
show();
}
}
void LoadConfigValues()
{
StreamResourceInfo streamInfo = Application.GetResourceStream(new Uri("config.xml", UriKind.Relative));
if (streamInfo != null)
{
StreamReader sr = new StreamReader(streamInfo.Stream);
//This will Read Keys Collection for the xml file
XDocument document = XDocument.Parse(sr.ReadToEnd());
var preferences = from results in document.Descendants()
where (string)results.Attribute("name") == "AutoHideSplashScreen"
select (string)results.Attribute("value") == "true";
if (preferences.Count() > 0 && preferences.First() == false)
{
autohide = false;
}
}
}
public void show(string options = null)
{
if (popup.IsOpen)
{
return;
}
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
this.popup.IsOpen = true;
popup.Child.Opacity = 0;
Storyboard story = new Storyboard();
DoubleAnimation animation;
animation = new DoubleAnimation();
animation.From = 0.0;
animation.To = 1.0;
animation.Duration = new Duration(TimeSpan.FromSeconds(0.2));
Storyboard.SetTarget(animation, popup.Child);
Storyboard.SetTargetProperty(animation, new PropertyPath("Opacity"));
story.Children.Add(animation);
Debug.WriteLine("Fading the splash screen in");
story.Begin();
popup.IsOpen = true;
if (autohide)
{
DispatcherTimer timer = new DispatcherTimer();
timer.Tick += (object sender, EventArgs e) =>
{
hide();
};
timer.Interval = TimeSpan.FromSeconds(1.2);
timer.Start();
}
});
}
public void hide(string options)
public void hide(string options = null)
{
if (!popup.IsOpen)
{
return;
}
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
this.popup.IsOpen = false;
popup.Child.Opacity = 1.0;
Storyboard story = new Storyboard();
DoubleAnimation animation;
animation = new DoubleAnimation();
animation.From = 1.0;
animation.To = 0.0;
animation.Duration = new Duration(TimeSpan.FromSeconds(0.4));
Storyboard.SetTarget(animation, popup.Child);
Storyboard.SetTargetProperty(animation, new PropertyPath("Opacity"));
story.Children.Add(animation);
story.Completed += (object sender, EventArgs e) =>
{
popup.IsOpen = false;
};
story.Begin();
});
}
}