Windows phone 7 第一次导航到全景页面时,它太长,无法加载
我正在开发一个WindowsPhone7.1应用程序,它有一个全景页面 此全景页面有两个全景项目,一个带有两个文本块,另一个带有bing地图控件。我还设置了一个1.5MB的图像作为全景控制背景 这是Panorama的XAML:Windows phone 7 第一次导航到全景页面时,它太长,无法加载,windows-phone-7,xaml,windows-phone-7.1,panorama-control,Windows Phone 7,Xaml,Windows Phone 7.1,Panorama Control,我正在开发一个WindowsPhone7.1应用程序,它有一个全景页面 此全景页面有两个全景项目,一个带有两个文本块,另一个带有bing地图控件。我还设置了一个1.5MB的图像作为全景控制背景 这是Panorama的XAML: <phone:PhoneApplicationPage x:Class="XxXClass.DemoDetail" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
<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>
第一次导航到全景页面时,我的页面太长,无法显示,若我点击后退按钮并返回到它,它的加载速度会更快
如何使panorama的页面加载速度更快?1.5Mb太大了。在运行时,图像将被解压缩并存储在内存中。它第二次很快,因为它已经在内存中了。如果目标设备的内存为256Mb,则必须减少内存使用 试试这些:
- 使用压缩的jpeg。尽量减小文件大小
- 背景图像应介于480 x 800像素和1024 x 800像素(宽x高)之间,以确保良好的性能、最小的加载时间和无缩放
- 背景图像应该是一种资源
- 禁用工具箱动画
- 将全景项目限制为4个
由于可用性,我也会考虑将Bing映射移到非幻灯片启用的页面。
1.5 MB太大了。在运行时,图像将被解压缩并存储在内存中。它第二次很快,因为它已经在内存中了。如果目标设备的内存为256Mb,则必须减少内存使用
试试这些:- 使用压缩的jpeg。尽量减小文件大小
- 背景图像应介于480 x 800像素和1024 x 800像素(宽x高)之间,以确保良好的性能、最小的加载时间和无缩放
- 背景图像应该是一种资源
- 禁用工具箱动画
- 将全景项目限制为4个
由于可用性,我还将考虑将Bing映射移到非幻灯片启用的页面。
尝试注释MAP控件。我确信地图控制的问题。
我总是在后台线程中进行数据初始化。然后,当数据准备就绪时,启动并重新绘制UI。如果确定1.5 MB太大,请将其减小。尝试注释地图控件。我确信地图控制的问题。
我总是在后台线程中进行数据初始化。然后,当数据准备就绪时,启动并重新绘制UI。如果1.5 MB太大,请减小它。您能告诉我,为什么制作背景图像资源比制作内容更好吗?如果您使用的是Panorama,与内容相比,资源背景会立即加载。这是因为图像在应用程序启动时加载到内存中。显然,它会影响启动时间。现在,图像是363Kb,但它仍然太长,无法加载。如果我移除贴图控件,它将正常加载。如果我在
Panorama\u SelectionChanged
事件中加载地图(当我移动到第二个panorama项目时,`它仍然会冻结用户界面一两秒钟。是否有类似于Android的AsyncTask
的东西来避免这个问题?请告诉我,为什么制作背景图像资源比内容更好?如果你使用panorama,与内容相比,资源背景会立即加载。这是因为图像在应用程序启动时被加载到内存中。显然,它会影响启动时间。现在,图像为363Kb,但它仍然太长,无法加载。如果我删除地图控制,它将正常加载。如果我在Panorama\u SelectionChanged
事件上加载地图(当我移动到第二个panorama项目时,`它仍然会冻结用户界面一两秒钟。是否有类似于Android的AsyncTask
的东西来避免这个问题?谢谢你的回答。现在图像是363Kb,panorama页面需要两到三秒钟才能加载。如果我评论map control,加载速度会更快。默认情况下,为映射然后在后台线程中获取数据,然后将可见性设置为可见。不要忘记使用BeginInvoke。或者您可以仅初始化Pageloaded事件的映射。Pageloaded事件不会在Windows Phone上退出。它调用Loaded=“PhoneApplicationPage\U Loaded”谢谢你的回答。现在图像是363Kb,全景页面需要两三秒钟才能加载。而且,如果我评论map control,它加载得更快。默认情况下为地图创建visibility.collapsed,然后在后台线程中获取数据,将visibility=visible。不要忘记使用BeginInvoke。或者你可以为Pageloaded事件初始化map.Pageloaded事件在Windows Phone上不退出。它调用Loaded=“PhoneApplicationPage\u Loaded”