动画地图高度性能问题

时间:2014-10-26 19:21:11

标签: c# windows-phone-8 bing-maps

我正在使用底部的地图和菜单创建反应式UI。我的地图使用内置的windows phone bing maps控件,下方有一个用户控件。

我的XAML看起来像这样:

<Grid x:Name="LayoutRoot" Background="Transparent">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <Controls:Map x:Name="map"/>
    <Border Background="{StaticResource PhoneChromeBrush}"
            Grid.Row="1">
        <telerikPrimitives:RadTransitionControl Grid.Row="1">
            <views:OverviewPage/>
        </telerikPrimitives:RadTransitionControl>
    </Border>

</Grid>

我的动画看起来像这样。我已经花了很长时间来展示问题。

DoubleAnimation animation = new DoubleAnimation() { Duration = TimeSpan.FromSeconds(10), To = 480, From = 0 };

Storyboard.SetTarget(animation, map);
Storyboard.SetTargetProperty(animation, new PropertyPath(HeightProperty));

Storyboard storyboard = new Storyboard();
storyboard.Children.Add(animation);
storyboard.Begin();

现在,如果我将地图控件换成其他东西,请说边框。一切都按照你的预期运作,动画很流畅。如果我使用地图,问题是我的UI更新只有每半秒左右。我在Lumia 1520上遇到了这个滞后现象,我无法想象它在低端设备上有多糟糕。

我正在寻找一些方法来改善这个动画或其他替代方案的性能。有没有人以前尝试过这个或者你知道一个好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

这个问题是,每次移动地图或调整大小时,地图都必须进行一系列计算。当您为地图设置动画时,地图的大小会在很短的时间内更新一次,导致地图重复计算所有内容。由于所涉及的所有数据和计算,地图控件通常倾向于重量控制。应避免制作地图大小的动画,尤其是在功能较弱的设备上,例如手机。