Custom splash screen with progress bar for Windows Phone applications
somnathbanik
(Talk | contribs) (Somnathbanik -) |
somnathbanik
(Talk | contribs) (Somnathbanik -) |
||
| Line 1: | Line 1: | ||
[[Category:Windows Phone]] | [[Category:Windows Phone]] | ||
| − | |||
{{Abstract|This article demonstrates how to create a splash screen with an animated progress bar.}} | {{Abstract|This article demonstrates how to create a splash screen with an animated progress bar.}} | ||
| + | |||
{{ArticleMetaData | {{ArticleMetaData | ||
|sourcecode= [[Media: SplashBar.zip]]<!-- Link to example source code e.g. [[Media:The Code Example ZIP.zip]] --> | |sourcecode= [[Media: SplashBar.zip]]<!-- Link to example source code e.g. [[Media:The Code Example ZIP.zip]] --> | ||
|installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) --> | |installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) --> | ||
| − | |devices= WP7 Emulator | + | |devices= WP7 Emulator <!-- Devices tested against - e.g. ''devices=N95, N8'') --> |
| − | |sdk= [ | + | |sdk= [https://www.developer.nokia.com/Develop/Windows_Phone/Tools/ Windows Phone SDK 7.1 ]<!-- SDK(s) built and tested against (e.g. [http://linktosdkdownload/ Nokia Qt SDK 1.1]) --> |
| − | |platform= | + | |platform= Windows Phone 7.1<!-- Compatible platforms - e.g. Symbian^1 and later, Qt 4.6 and later --> |
|devicecompatability= <!-- Compatible devices e.g.: All* (must have internal GPS) --> | |devicecompatability= <!-- Compatible devices e.g.: All* (must have internal GPS) --> | ||
|signing=<!-- Signing requirements - empty or one of: Self-Signed, DevCert, Manufacturer --> | |signing=<!-- Signing requirements - empty or one of: Self-Signed, DevCert, Manufacturer --> | ||
|capabilities=<!-- Capabilities required by the article/code example (e.g. Location, NetworkServices. --> | |capabilities=<!-- Capabilities required by the article/code example (e.g. Location, NetworkServices. --> | ||
| − | |keywords= Splash Screen/Progress Bar<!-- APIs, classes and methods (e.g. QSystemScreenSaver, QList, CBase --> | + | |keywords= Splash Screen/ Progress Bar<!-- APIs, classes and methods (e.g. QSystemScreenSaver, QList, CBase --> |
|id= <!-- Article Id (Knowledge base articles only) --> | |id= <!-- Article Id (Knowledge base articles only) --> | ||
|creationdate= 04th October,2011<!-- Format YYYYMMDD --> | |creationdate= 04th October,2011<!-- Format YYYYMMDD --> | ||
|author= [[User:somnathbanik]] <!-- Display as link [[User:username]] --> | |author= [[User:somnathbanik]] <!-- Display as link [[User:username]] --> | ||
}} | }} | ||
| + | |||
| + | |||
==Introduction== | ==Introduction== | ||
| − | The default SplashScreenImage.jpg in windows phone 7 application is a static image. In this article we will add an animated progress bar in the splash screen. | + | The default '''SplashScreenImage.jpg''' in windows phone 7 application is a static image. In this article we will add an animated progress bar in the splash screen. |
| − | + | [[File: SplashBar.png|thumb|301px|none| Splash Screen]] | |
==Basic Idea== | ==Basic Idea== | ||
| − | Here we will use some tips and tricks to add the progress bar in the splash screen. As we know that the default splash screen is SplashScreenImage.jpg | + | Here we will use some tips and tricks to add the progress bar in the splash screen. As we know that the default splash screen is '''SplashScreenImage.jpg''' and loads when the app starts. We use the [http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.popup%28v=VS.95%29.aspx Popup] class to displays content on top of existing content. In our case the existing content is the default splash screen, so we will add the same splash screen and the progress bar in the Popup class so that the user doesn’t have the feel of image change. And thus the user will see the splash screen with an animated progress bar. The [http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx BackgroundWorker] class is used to run an operation in a separate thread, so that when it expires we close the [http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.popup%28v=VS.95%29.aspx Popup] class. |
==Implementation== | ==Implementation== | ||
| − | + | First lets create a project with ''Windows Phone Application'' Template. Once the project is being created, lets create a ''Windows Phone User Control'' '''SplashScreenControl.xaml''' and add {{Icode|ProgressBar}}, {{Icode|TextBlock}} and {{Icode|Image}} in it. The image is the default splash of the project. | |
| − | In MainPage.xaml.cs Constructor we called a function ShowSplash() to load the popup. | + | In ''MainPage.xaml.cs'' Constructor we called a function {{Icode|ShowSplash()}} to load the popup. |
<code cpp> | <code cpp> | ||
| Line 45: | Line 47: | ||
</code> | </code> | ||
| − | First we initialize the Popup class and then set SplashScreenControl class to be hosted in the popup. | + | First we initialize the [http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.popup%28v=VS.95%29.aspx Popup] class and then set {{Icode|SplashScreenControl}} class to be hosted in the popup. {{Icode|IsOpen}} opens the popup. Till now the code will load the splash screen (popup) with the progress bar. |
Now we will add some background process, and when the background process gets completed we will close the popup as a result user will see the splash screen. | Now we will add some background process, and when the background process gets completed we will close the popup as a result user will see the splash screen. | ||
| − | Function StartLoadingData() starts and complete the background work. | + | Function {{Icode|StartLoadingData()}} starts and complete the background work. |
| Line 61: | Line 63: | ||
</code> | </code> | ||
| − | First we initialize the BackgroundWorker class. We called RunWorkerAsync () function to starts execution of a background operation and thus backroungWorker_DoWork() is called. | + | First we initialize the [http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx BackgroundWorker] class. We called {{Icode|RunWorkerAsync()}} function to starts execution of a background operation and thus {{Icode|backroungWorker_DoWork()}} is called. |
<code cpp> | <code cpp> | ||
| Line 72: | Line 74: | ||
</code> | </code> | ||
| − | + | Here we use the {{Icode|Sleep()}} function to wait for some time. When {{Icode|backroungWorker_DoWork()}} gets expired, {{Icode|backroungWorker_RunWorkerCompleted()}} is called which closes the popup. | |
<code cpp> | <code cpp> | ||
| Line 88: | Line 90: | ||
</code> | </code> | ||
Thus user can see a splash screen with the progress bar. | Thus user can see a splash screen with the progress bar. | ||
| − | To make | + | To make a continuous progress bar we add the below code in ''SplashScreenControl.xaml.cs'' |
<code cpp> | <code cpp> | ||
this.progressBar1.IsIndeterminate = true; | this.progressBar1.IsIndeterminate = true; | ||
</code > | </code > | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
==Source Code== | ==Source Code== | ||
The full source code of the example is available here: [[File: SplashBar.zip]] | The full source code of the example is available here: [[File: SplashBar.zip]] | ||
Revision as of 18:46, 4 October 2011
This article demonstrates how to create a splash screen with an animated progress bar.
Article Metadata
Code Example
Tested with
Compatibility
Article
Contents |
Introduction
The default SplashScreenImage.jpg in windows phone 7 application is a static image. In this article we will add an animated progress bar in the splash screen.
Basic Idea
Here we will use some tips and tricks to add the progress bar in the splash screen. As we know that the default splash screen is SplashScreenImage.jpg and loads when the app starts. We use the Popup class to displays content on top of existing content. In our case the existing content is the default splash screen, so we will add the same splash screen and the progress bar in the Popup class so that the user doesn’t have the feel of image change. And thus the user will see the splash screen with an animated progress bar. The BackgroundWorker class is used to run an operation in a separate thread, so that when it expires we close the Popup class.
Implementation
First lets create a project with Windows Phone Application Template. Once the project is being created, lets create a Windows Phone User Control SplashScreenControl.xaml and add ProgressBar, TextBlock and Image in it. The image is the default splash of the project.
In MainPage.xaml.cs Constructor we called a function ShowSplash() to load the popup.
private void ShowSplash()
{
this.popup = new Popup();
this.popup.Child = new SplashScreenControl();
this.popup.IsOpen = true;
StartLoadingData();
}
First we initialize the Popup class and then set SplashScreenControl class to be hosted in the popup. IsOpen opens the popup. Till now the code will load the splash screen (popup) with the progress bar. Now we will add some background process, and when the background process gets completed we will close the popup as a result user will see the splash screen. Function StartLoadingData() starts and complete the background work.
private void StartLoadingData()
{
backroungWorker = new BackgroundWorker();
backroungWorker.DoWork += new DoWorkEventHandler(backroungWorker_DoWork);
backroungWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backroungWorker_RunWorkerCompleted);
backroungWorker.RunWorkerAsync();
}
First we initialize the BackgroundWorker class. We called RunWorkerAsync() function to starts execution of a background operation and thus backroungWorker_DoWork() is called.
void backroungWorker_DoWork(object sender, DoWorkEventArgs e)
{
//here we can load data
Thread.Sleep(9000);
}
Here we use the Sleep() function to wait for some time. When backroungWorker_DoWork() gets expired, backroungWorker_RunWorkerCompleted() is called which closes the popup.
void backroungWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
this.Dispatcher.BeginInvoke(() =>
{
this.popup.IsOpen = false;
}
);
}
Thus user can see a splash screen with the progress bar. To make a continuous progress bar we add the below code in SplashScreenControl.xaml.cs
this.progressBar1.IsIndeterminate = true;
Source Code
The full source code of the example is available here: File:SplashBar.zip

