微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在跨平台项目的页面过渡上使用SetCustomAnimations

如何解决如何在跨平台项目的页面过渡上使用SetCustomAnimations

按下并弹出pages时,我使用Custom renderer进行左右转换。我想在共享项目中编写该代码而不使用custom rendererdependency services

这是我的代码。我怎么能完全写成cross platform

    if
    {
        transaction.SetCustomAnimations(Resource.Animation.enter_right,Resource.Animation.exit_left,Resource.Animation.enter_left,Resource.Animation.exit_right);
    }
    else
    {
        transaction.SetCustomAnimations(Resource.Animation.enter_left,Resource.Animation.exit_right,Resource.Animation.enter_right,Resource.Animation.exit_left);
    }

解决方法

您可以使用Xamarin.Plugin.SharedTransitions这个插件。

https://github.com/GiampaoloGabba/Xamarin.Plugin.SharedTransitions

您可以按照以下步骤使用它。

1。在App.xaml.cs中,使用以下代码来扭曲主页。

  public App()
        {
            InitializeComponent();
            var sharedTransitionNavigationPage=new SharedTransitionNavigationPage(new MainPage());

            MainPage = sharedTransitionNavigationPage;
           
        }

MainPage.xam.cs中为Animations和导航添加以下代码。

namespace MyPopUpPageDemo
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            //for Animations
            SharedTransitionNavigationPage.SetBackgroundAnimation(this,BackgroundAnimation.SlideFromRight);
            SharedTransitionNavigationPage.SetTransitionDuration(this,2000);
            InitializeComponent();
        }

        private void Button_Clicked(object sender,EventArgs e)
        {
            //for navigation
            Navigation.PushAsync(new Page1());

        }

     
    }
}

在page1中,是相同的。

 [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class Page1 : ContentPage
    {
        public Page1()
        {
            SharedTransitionNavigationPage.SetBackgroundAnimation(this,1000);

            InitializeComponent();
        }

        private void Button_Clicked(object sender,EventArgs e)
        {
            Navigation.PushAsync(new Page2());
        }
    }

此处正在运行GIF。

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。