使用ContentPage时Xamarin表单中的自定义页面转换
我正在创建一个xamarin表单应用程序,我想在页面之间导航时更改转换。我无法使用,因为我使用的是ContentPage。我也在xamarin论坛上读过这条著名的帖子,但对我来说没有任何效果。这里是链接 我使用的是xamarin forms 2.3.4.247和android api level 25以及appCompat 23.3.0使用ContentPage时Xamarin表单中的自定义页面转换,xamarin,xamarin.forms,xamarin.android,Xamarin,Xamarin.forms,Xamarin.android,我正在创建一个xamarin表单应用程序,我想在页面之间导航时更改转换。我无法使用,因为我使用的是ContentPage。我也在xamarin论坛上读过这条著名的帖子,但对我来说没有任何效果。这里是链接 我使用的是xamarin forms 2.3.4.247和android api level 25以及appCompat 23.3.0 有什么想法吗?我找到了一个解决办法,我回答了自己的问题,也许这对其他人有帮助。 首先,我们需要为任何平台(在本例中为android)创建自定义渲染器 . 在D
有什么想法吗?我找到了一个解决办法,我回答了自己的问题,也许这对其他人有帮助。 首先,我们需要为任何平台(在本例中为android)创建自定义渲染器 . 在Droid目标中的Renderers文件夹下创建一个新类 CustomTransitionsRenderer.cs
[assembly:ExportRenderer(typeof(NavigationPage),typeof(CustomTransitionsRenderer))]
namespace TesarSmartwatchForms.Droid.Renderers
{
public class CustomTransitionsRenderer : Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer
{
//SwitchContentAsync
protected override void SetupPageTransition(Android.Support.V4.App.FragmentTransaction transaction, bool isPush)
{
if (isPush)
transaction.SetCustomAnimations(Resource.Animator.move_in_left, 0);
else //prevView enter:
transaction.SetCustomAnimations(Resource.Animator.side_in_right, 0);
}
}
}
然后在Droid>资源>animator下添加自定义动画,如下所示:
在_left.xml中移动_
<?xml version="1.0" encoding="UTF-8" ?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<translate
android:fromXDelta="-100%p"
android:toXDelta="0"
android:duration="300"/>
</set>
目前无法在Xamarin.Forms中自定义页面转换。我发现(“未处理的异常:Java.Lang.NullPointerException:`on`base.OnCreate(bundle))在使用方法时出现错误。这可能与Xamarin Forms版本有关。这表明NavigationPageRenderer在Xamarin.Forms 4中已过时
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<translate
android:fromXDelta="100%p"
android:toXDelta="0"
android:duration="300" />
</set>
<item name="android:windowBackground">@android:color/transparent</item>
Navigation.PushAsync(page);