C# 使用百分比创建objectAnimation

C# 使用百分比创建objectAnimation,c#,xamarin.android,C#,Xamarin.android,我有个问题。我使用以下代码创建了一个自定义amimation: <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" android:

我有个问题。我使用以下代码创建了一个自定义amimation:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

  <objectAnimator
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:duration="500"
      android:propertyName="x"
      android:valueFrom="0"
      android:valueTo="-1000"
      android:valueType="floatType" />

</set>
错误如下:

无法从“Android.Animation.ObjectAnimator”转换为“int”


这在XML中是不可能做到的。但是您可以在cs代码中设置百分比

TextView textView = FindViewById<TextView>(Resource.Id.text_content);
// Here using a textView to have a test    

DisplayMetrics metrics = Resources.DisplayMetrics;
float screenWidth = metrics.WidthPixels;//calculate screen width
double wantValue = 0.5;//set a percentages
ObjectAnimator objectAnimator = ObjectAnimator.OfFloat(textView, "translationX", 0, (float)(screenWidth*wantValue));
objectAnimator.SetDuration(3000);
objectAnimator.Start();
如果发生此错误:

未知动画师名称:发生翻译

您需要更改为V4版本的片段:

using Fragment = Android.Support.V4.App.Fragment;

什么是
textView
?@A.Vreeswijk
textView
在我的项目中是一个textView,你可以用你的视图替换它。我已经更新了答案。那么我如何将其用于片段,因为我用
trans.SetCustomAnimations(SlideRight,Slidelft)尝试了你的代码但它说它不能将动画转换为int。我做错了什么?我创建了2个ObjectAnimators,顺便说一句。@A.Vreeswijk好的,你可以显示更多关于
SetCustomAnimations
的代码。我会检查它。@A.Vreeswijk谢谢你更新问题。我已经更新了答案。
<?xml version="1.0" encoding="utf-8" ?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

  <translate
      android:fromXDelta="-100%p"
      android:toXDelta="0%p"
      android:duration="500"/>

  <alpha
      android:fromAlpha="0.5"
      android:toAlpha="1.0"
      android:duration="500"/>

</set>
<?xml version="1.0" encoding="utf-8" ?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

  <translate
      android:fromXDelta="0%p"
      android:toXDelta="-100%p"
      android:duration="500"/>

  <alpha
      android:fromAlpha="1.0"
      android:toAlpha="0.5"
      android:duration="500"/>

</set>
<?xml version="1.0" encoding="utf-8" ?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

  <translate
      android:fromXDelta="100%p"
      android:toXDelta="0%p"
      android:duration="@integer/card_flip_time_full"/>

  <alpha
      android:fromAlpha="0.5"
      android:toAlpha="1.0"
      android:duration="@integer/card_flip_time_full"/>

</set>
<?xml version="1.0" encoding="utf-8" ?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

  <translate
      android:fromXDelta="0%p"
      android:toXDelta="100%p"
      android:duration="500"/>

  <alpha
      android:fromAlpha="1.0"
      android:toAlpha="0.5"
      android:duration="500"/>

</set>
var details = Android.Support.V4.App.Fragment.FragmentManager.FindFragmentById(Resource.Id.details) as DetailsFragment;
var trans = Android.Support.V4.App.Fragment.FragmentManager.BeginTransaction();
trans.Replace(Resource.Id.details, details);
trans.SetCustomAnimations(Resource.Animation.slide_right_in,Resource.Animation.slide_left_out,Resource.Animation.slide_left_in,Resource.Animation.slide_right_out);
trans.Commit();
using Fragment = Android.Support.V4.App.Fragment;