C# 使用百分比创建objectAnimation
我有个问题。我使用以下代码创建了一个自定义amimation: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:
<?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.VreeswijktextView
在我的项目中是一个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;