Отображение анимированных изображений на WP7 - PullRequest
1 голос
/ 09 ноября 2011

Я хочу, чтобы мое приложение показывало анимированное изображение загрузки, когда оно загружает что-то, я пытался добавить уже созданный анимированный .gif, но кажется, что WP7 не поддерживает это ...

изображение загружается примерно так: enter image description here

Я думаю создать метод прокрутки между листами спрайтов, как в 2D играх, но для создания такого метода потребуется слишком много усилий, и яя не уверен, что он будет работать в Silverlight, еще одно простое решение?

Ответы [ 2 ]

4 голосов
/ 09 ноября 2011

Я адаптировал загрузчик на базе XAML Дина Чака; это работает довольно хорошо как наложение. Просто установите его Видимость на Скрытый, когда не выполняете фоновую работу, а затем переключите его на Видимый, если вы хотите заблокировать части пользовательского интерфейса с индикатором загрузки, когда выполняете работу в фоновом режиме. Анимация определена в XAML, поэтому для ее раскрутки не требуется никакого кода или хитрости.

Вот соответствующие биты:

<Canvas RenderTransformOrigin="0.5,0.5" Width="120" Height="120"> 
    <Ellipse Width="21.835" Height="21.862" Canvas.Left="20.1696" Canvas.Top="9.76358" 
        Stretch="Fill" Fill="#E6000000"/> 
    <Ellipse Width="21.835" Height="21.862" Canvas.Left="2.86816" Canvas.Top="29.9581" 
        Stretch="Fill" Fill="#CD000000"/> 
    <Ellipse Width="21.835" Height="21.862" Canvas.Left="5.03758e-006" Canvas.Top="57.9341" 
        Stretch="Fill" Fill="#B3000000"/> 
    <Ellipse Width="21.835" Height="21.862" Canvas.Left="12.1203" Canvas.Top="83.3163" 
        Stretch="Fill" Fill="#9A000000"/> 
    <Ellipse Width="21.835" Height="21.862" Canvas.Left="36.5459" Canvas.Top="98.138" 
        Stretch="Fill" Fill="#80000000"/> 
    <Ellipse Width="21.835" Height="21.862" Canvas.Left="64.6723" Canvas.Top="96.8411" 
        Stretch="Fill" Fill="#67000000"/> 
    <Ellipse Width="21.835" Height="21.862" Canvas.Left="87.6176" Canvas.Top="81.2783" 
        Stretch="Fill" Fill="#4D000000"/> 
    <Ellipse Width="21.835" Height="21.862" Canvas.Left="98.165" Canvas.Top="54.414" 
        Stretch="Fill" Fill="#34000000"/> 
    <Ellipse Width="21.835" Height="21.862" Canvas.Left="92.9838" Canvas.Top="26.9938" 
        Stretch="Fill" Fill="#1A000000"/> 
    <Ellipse Width="21.835" Height="21.862" Canvas.Left="47.2783" Canvas.Top="0.5" 
        Stretch="Fill" Fill="#FF000000"/> 
    <Canvas.RenderTransform> 
        <RotateTransform x:Name="SpinnerRotate" Angle="0" /> 
    </Canvas.RenderTransform> 
    <Canvas.Triggers> 
        <EventTrigger RoutedEvent="ContentControl.Loaded"> 
            <BeginStoryboard> 
                <Storyboard> 
                    <DoubleAnimation Storyboard.TargetName="SpinnerRotate" 
                             Storyboard.TargetProperty="(RotateTransform.Angle)" 
                             From="0" To="360" Duration="0:0:01" 
                             RepeatBehavior="Forever" /> 
                </Storyboard> 
            </BeginStoryboard> 
        </EventTrigger> 
    </Canvas.Triggers> 
</Canvas> 

Вы можете щелкнуть эту ссылку для получения более подробной информации. Это WPF, поэтому может потребоваться некоторая работа по его адаптации для WP7.

Кстати, когда я говорю «наложение», я имею в виду размещение одного элемента над другим. Такие как:

<Grid>
  <t:MyUserControl />
  <t:MyOverlayUserControl Visibility="Hidden" />
</Grid>
2 голосов
/ 09 ноября 2011

К сожалению, анимированные GIF-файлы не поддерживаются в Silverlight. Для меня хорошо использовать Blend и некоторую векторную графику, похожую на ту, которую вы опубликовали выше, с бесконечной рекурсией. Попробуйте создать пользовательский элемент управления, если хотите использовать его повторно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...