創建Silverlight自定義啓動畫面

每一款商業的Silverlight項目,爲了體現項目個性化,都會有不同的界面設計,項目UI設計的第一步就是創建個性的自定義啓動畫面,本文將介紹如何創建Silverlight自定義啓動畫面,也就是經常說的Splash Screen.

Silverlight初始化建立啓動畫面如下圖:

 

經過修改,將改如下圖:

 

根據上圖我們可以看出,該啓動畫面分爲三個部分,圖片部分,進度條部分,百分比部分,對於圖片部分,以後我們將修改爲動畫圖片,現在着重介紹進度條和百分比部分。

 

1. 首先,使用文本工具創建一個空文件,命名爲“SplashScreen.xaml”,該文檔是爲了承載自定義啓動畫面的控件代碼所用,由於我們創建自定義啓動畫面,需要覆蓋替換原始啓動畫面,爲了不讓該文件封裝到XAP包中,我們使用其他文本工具先創建一個獨立的空文件。文件創建後,可以使用VS2008或者Blend添加到項目中。

 

 

2. 現在可以使用VS2008或者Blend打開SplashScreen.xaml文件,填寫以下代碼:

 

 1 <StackPanel xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 2             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 3             VerticalAlignment="Center" Margin="0,100,0,0">
 4   <!--頭部圖片-->
 5 <Image x:Name="myImage" Source="/silverlightchina.png"
 6                       Height="56"
 7                   Width="220"
 8                   HorizontalAlignment="Center"
 9                   VerticalAlignment="Center"
10                   Margin="10" />
11 
12 <StackPanel HorizontalAlignment="Center">
13 <!--進度條-->
14     <Grid HorizontalAlignment="Center">
15     <Rectangle Stroke="#FFDEE6F0" HorizontalAlignment="Left" Width="300" Height="10" RadiusX="2" RadiusY="2" StrokeThickness="1"/>
16     <Rectangle Fill="#FF7E99C8" HorizontalAlignment="Left" VerticalAlignment="Center" StrokeThickness="0" RadiusX="0" RadiusY="0" Width="296" Height="6" x:Name="progressBar" RenderTransformOrigin="0,0.5" Margin="4">
17       <Rectangle.RenderTransform>
18         <ScaleTransform x:Name="progressBarScale" />
19       </Rectangle.RenderTransform>
20     </Rectangle>
21     </Grid>
22 
23 <!--百分比-->
24     <Grid HorizontalAlignment="Center">
25     <TextBlock x:Name="progressText" Margin="18,0,17,19" Height="26" Text="0%" FontSize="16" Opacity="0.8" VerticalAlignment="Bottom" TextAlignment="Right"/>
26     <TextBlock x:Name="progressText2" Margin="18,0,7,8" Height="70" Text="0%" FontSize="50" Opacity="0.04" FontWeight="Bold" VerticalAlignment="Bottom" TextAlignment="Right"/>
27     </Grid>
28   </StackPanel>
29 </StackPanel>

 

 

代碼中的進度條部分,我們定義了兩個矩形,一個是外部的邊框矩形,一個是內部的進度矩形,通過屬性設置其顯示效果。

百分比部分,我們定義了兩個TextBlock,顯示百分比數值。

 

3. 在新建的Silverlight項目中,VS2008會自動創建測試頁面CustomizeSplashScreenTestPage.html和CustomizeSplashScreenTestPage.aspx,該測試頁面是通過Object對XAP進行下載和調用,爲了讓Silverlight項目識別自定義啓動畫面,我們需要在OBJECT中添加以下參數,在代碼下載中,我僅修改了CustomizeSplashScreenTestPage.html:

 

1 <param name="splashscreensource" value="SplashScreen.xaml"/>    
2 <param name="onSourceDownloadProgressChanged" value="onSourceDownloadProgressChanged" />

 

 

參數1,splashscreensource是指定自定義啓動畫面文件名;

參數2,onSourceDownloadProgressChanged是一個Javascript函數,在下載XAP文件的時候,Silverlight客戶端會運行該函數,如果需要使用自定義啓動畫面,我們需要創建該函數。

 

1 <script type="text/javascript">
2             function onSourceDownloadProgressChanged(sender, eventArgs) {
3                 
4                 sender.findName("progressText").Text = Math.round(eventArgs.progress * 100+ "%";
5                 sender.findName("progressText2").Text = Math.round(eventArgs.progress * 100+ "%";
6                 sender.findName("progressBarScale").ScaleX = eventArgs.progress;
7             }
8 </script>   

 

在onSourceDownloadProgressChanged函數中,我們使用sender.findName獲取SplashScreen.xaml文件中的控件屬性,並賦值。 其中eventArgs.progress會返回一個從0到1的數字,該數字表示當前載入進程值。

從onSourceDownloadProgressChanged函數運行,可以確認進度條和百分比的顯示是同步的。

 

到這裏爲止,我們已經創建了Silverlight自定義啓動窗口。

 

測試自定義啓動畫面

本地運行Silverlight項目,XAP載入很快,很難正常查看自定義啓動畫面,我們可以使用以下方法,來延緩載入速度,在本地可以測試查看自定義啓動畫面。

1. 首先在客戶端,添加一個大文件,例如視頻,音樂,或者壓縮文件之類的,這裏我添加了一個壓縮文件大概100M。

 

2. 選中該文件,點擊右鍵編輯屬性,修改Build Action爲Content,這樣,Silverlight編譯的時候,會把該文件封裝到XAP文件中,測試項目的時候,自定義啓動頁面也就能正常查看了。

 

本文主要介紹了Silverilght非託管代碼的自定義啓動畫面創建,如果想創建Silverlight託管代碼的自定義啓動畫面,可以參考[Silverlight]通過SilverlightLoader使用託管代碼創建自定義載入界面(Splash Screen) 。

 

對於非託管XAML+js的解決方案,也可以參考MSDN:http://msdn.microsoft.com/zh-cn/library/cc903962(VS.95).aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章