2012-10-27 62 views
0

我正在開發一個具有全景頁面的Windows Phone 7.1應用程序。我第一次導航到全景圖頁面時太長,無法加載

此全景圖頁面有兩個全景項目,一個帶有兩個文本塊,另一個帶有bing地圖控件。我還設置了一個1.5MB的圖像作爲全景控制背景。

這是全景的XAML:

<phone:PhoneApplicationPage 
    x:Class="XxXClass.DemoDetail" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" 
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" 
    xmlns:controls="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit" 
    mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="800" 
    FontFamily="{StaticResource PhoneFontFamilyNormal}" 
    FontSize="{StaticResource PhoneFontSizeNormal}" 
    SupportedOrientations="Portrait" Orientation="Portrait" 
    shell:SystemTray.IsVisible="False" Foreground="{x:Null}" xmlns:my="clr-namespace:Microsoft.Phone.Controls.Maps;assembly=Microsoft.Phone.Controls.Maps"> 
    <toolkit:TransitionService.NavigationInTransition> 
     <toolkit:NavigationInTransition> 
      <toolkit:NavigationInTransition.Backward> 
       <toolkit:TurnstileTransition Mode="BackwardIn"/> 
      </toolkit:NavigationInTransition.Backward> 
      <toolkit:NavigationInTransition.Forward> 
       <toolkit:TurnstileTransition Mode="ForwardIn"/> 
      </toolkit:NavigationInTransition.Forward> 
     </toolkit:NavigationInTransition> 
    </toolkit:TransitionService.NavigationInTransition> 
    <toolkit:TransitionService.NavigationOutTransition> 
     <toolkit:NavigationOutTransition> 
      <toolkit:NavigationOutTransition.Backward> 
       <toolkit:TurnstileTransition Mode="BackwardOut"/> 
      </toolkit:NavigationOutTransition.Backward> 
      <toolkit:NavigationOutTransition.Forward> 
       <toolkit:TurnstileTransition Mode="ForwardOut"/> 
      </toolkit:NavigationOutTransition.Forward> 
     </toolkit:NavigationOutTransition> 
    </toolkit:TransitionService.NavigationOutTransition> 
    <!--LayoutRoot contains the root grid where all other page content is placed--> 
    <Grid x:Name="LayoutRoot"> 
     <controls:Panorama Title="Demonstation Tracker"> 
      <controls:Panorama.Background> 
       <ImageBrush Stretch="Fill" ImageSource="/Images/demonstrationPanorama.png"/> 
      </controls:Panorama.Background> 

      <!--Panorama item one--> 
      <controls:PanoramaItem Header="Details"> 
       <Grid Background="#73000000" Margin="0,0,0,26"> 
        <TextBlock Height="42" Margin="8,8,174,0" TextWrapping="Wrap" Text="XXXX" VerticalAlignment="Top" FontSize="{StaticResource PhoneFontSizeLarge}"/> 
        <TextBlock Margin="8,54,8,8" TextWrapping="Wrap" HorizontalAlignment="Center" VerticalAlignment="Center" Height="413" Width="381" FontSize="{StaticResource PhoneFontSizeMedium}"><Run Text="xxx."/><Run Text=".."/></TextBlock> 
       </Grid> 
      </controls:PanoramaItem> 

      <!--Panorama item two--> 
      <controls:PanoramaItem Header="Map"> 
       <Grid> 
        <my:Map Name="map1" Margin="0,0,0,26" Height="420" Width="420" /> 
       </Grid> 
      </controls:PanoramaItem> 
     </controls:Panorama> 
    </Grid> 

    <!--Panorama-based applications should not show an ApplicationBar--> 

</phone:PhoneApplicationPage> 

我第一次瀏覽到全景頁我得太久顯示,如果我輕觸後退按鈕,我回來了,它更快速加載。

我怎樣才能使全景圖的頁面加載速度更快?

回答

0

嘗試評論地圖控件。我敢肯定,與地圖控制的問題。 我總是在後臺線程中進行數據初始化。然後當數據準備好時,使用BeginInvoke並重繪UI。當然1.5 MB太大了,減少它。

+0

感謝您的回答。是363Kb,全景頁面需要兩到三秒才能加載,如果我評論地圖控制,它的加載速度會更快 – VansFannel

+0

使地圖默認爲visibility.collapsed,然後在後臺線程中獲取數據put visibility = visible。使用BeginInvoke。Ore U可以爲Pageloaded事件初始化地圖 – Vovich

+0

Pageloaded事件不會在Windows Phone上退出 – VansFannel

3

1.5Mb太大了。在運行時,圖像將被解壓縮並存儲在內存中。這是第二次快速,因爲它已經在內存中。如果您使用256Mb RAM作爲目標設備,則必須減少內存使用量。

嘗試這些:

  • 使用壓縮的JPEG。嘗試最小化文件大小。
  • 背景圖像應該在480 x 800像素和1024 x 800像素(寬x高)之間,以確保良好的性能,最小的加載時間和不縮放。
  • 背景圖片應該是一個資源。
  • 禁用工具動畫
  • 限制,因爲易用性的PanoramaItems至4

我也會考慮到Bing地圖移動到非幻燈片啓用頁面。

+0

你能告訴,爲什麼使背景圖像資源更好,然後內容? –

+0

如果您正在使用Panorama,則與內容相比,資源背景將立即加載。這是因爲圖像在應用程序啓動時加載到內存中。顯然它會影響啓動時間。 –

+0

現在,圖像是363Kb,加載時間過長。如果我刪除地圖控制,它會正常加載。如果我在'Panorama_SelectionChanged'事件中加載地圖(當我移動到第二個全景圖項目時,它仍然會凍結UI一兩秒鐘。有沒有類似於Android的'AsyncTask'來避免這個問題? – VansFannel

相關問題