Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin 设置ContentPage背景图像的动画_Xamarin_Xamarin.forms - Fatal编程技术网

Xamarin 设置ContentPage背景图像的动画

Xamarin 设置ContentPage背景图像的动画,xamarin,xamarin.forms,Xamarin,Xamarin.forms,到目前为止,我还没有找到这个简单问题的答案: 如何设置背景图像的动画 现在我想玩这个背景,而不是改变它,我非常想模仿苹果的照片做幻灯片: 最初的背景是1.jpg 使用动画沿一个方向移动它 将背景淡入2.jpg 冲洗并在两个图像之间重复循环图像 但是,我不知道如何检索图像对象以便为其设置动画 请注意,我不想要gif,只想要简单的静态图像。查看PageRenderer源代码,您可以很容易地看到,没有像您假设的那样的底层图像 void UpdateBackgroundImage(Page view)

到目前为止,我还没有找到这个简单问题的答案:

如何设置背景图像的动画

现在我想玩这个背景,而不是改变它,我非常想模仿苹果的照片做幻灯片:

最初的背景是1.jpg 使用动画沿一个方向移动它 将背景淡入2.jpg 冲洗并在两个图像之间重复循环图像 但是,我不知道如何检索图像对象以便为其设置动画

请注意,我不想要gif,只想要简单的静态图像。

查看PageRenderer源代码,您可以很容易地看到,没有像您假设的那样的底层图像

void UpdateBackgroundImage(Page view)
{
    if (!string.IsNullOrEmpty(view.BackgroundImage))
        this.SetBackground(Context.GetDrawable(view.BackgroundImage));
}
他们相当直接地将其设置在本机控件中。这意味着你必须模仿背景图像以获得动画效果。这个词是否存在

我不会给你现成的源代码,但我实现了一些类似的网格绝对布局可能也是可能的

网格中的每一行和每一列都有一个单独的行和列 包含背景的图像应先添加到集合中,而不必临时添加任何其他子对象 如果没有背景图像,则直接添加新的背景图像 如果已经有背景图像,则添加新图像时不透明度等于0 创建两个动画 一个是将旧图像淡出 一个是淡入新图像 代码:


因为我使用TranslateTo而不是Animate,所以我的确切代码看起来有点不同,但这应该可以

请看一下这些文件。你所做的不是动画@Greggz我现在做的不是,但我想做的是动画的背景图像的一页,而不是一个图像内的一页,我可以很容易地做到。假设你可以得到图像参考,我没有看到太多的区别。请将实际代码与您的尝试一起发布
void UpdateBackgroundImage(Page view)
{
    if (!string.IsNullOrEmpty(view.BackgroundImage))
        this.SetBackground(Context.GetDrawable(view.BackgroundImage));
}
private void FadeViews(View newView, View currentView)
{
    newView.Opacity = 0;
    Grid.Children.Insert(0, newView);

    newView.Animate("FadeIn", d => newView.Opacity = d, 0, 1);
    newView.Animate("FadeOut", d => currentView.Opacity = d, 1, 0, finished: (_, __) => this.Grid.Children.Remove(currentView));
}