我在代码中通过XML获得了一个动画滑块:
private void MoveSlider()
{
if (blNewestSelected)
{
var moveIt = AnimationUtils.LoadAnimation(this.BaseContext,
Resource.Animation.Profile_MoveSliderToLeft);
btnItemSelected.StartAnimation(moveIt);
}
else if (blMostApSelected)
{
var moveIt = AnimationUtils.LoadAnimation(this.BaseContext,
Resource.Animation.Profile_MoveSliderToCenter);
btnItemSelected.StartAnimation(moveIt);
}
else if (blMostUpvotedSelected)
{
var moveIt = AnimationUtils.LoadAnimation(this.BaseContext,
Resource.Animation.Profile_MoveSliderToRight);
btnItemSelected.StartAnimation(moveIt);
}
}
XML看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fillAfter="true">
<translate
android:fromXDelta="0%p"
android:toXDelta="62%p"
android:duration="400" />
</set>
问题是,动画总是从0 x-delta开始。 然而,我需要移交当前delta的varibale,以便 动画从对象当前所在的位置开始,而不是始终从0开始。 我一直无法找到,怎么做。这可能很容易...... 任何帮助都很棒:)
谢谢!
答案 0 :(得分:0)
您可以使用实际移动对象的ObjectAnimation
。这样可以正常工作,但您需要将应用定位到最低API级别11:
IInterpolator interpolators = AnimationUtils.LoadInterpolator(this, Android.Resource.Interpolator.AccelerateDecelerate);
ObjectAnimator transAnimation = ObjectAnimator.OfFloat(view, propertyName, fromX, toX);
transAnimation.SetDuration(400);
transAnimation.SetInterpolator(interpolators);
transAnimation.Start();
查看 - 这是要应用动画的视图
propertyName - 正在设置动画的属性为“translationX”。
FromX,toX - 动画随时间变化的一组值。