[英]Animating a horizontal translation of Fragments with objectAnimator
我想为片段之间的过渡设置动画,使其水平滑动。
问题是,现在在我的objectAnimator
,我将valueTo
和valueFrom
字段硬编码如下:
slide_in_from_right.xml:
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_mediumAnimTime"
android:propertyName="x"
android:valueFrom="1280"
android:valueTo="0"
android:valueType="floatType" />
slide_out_to_left.xml:
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_mediumAnimTime"
android:propertyName="x"
android:valueFrom="0"
android:valueTo="-1280"
android:valueType="floatType" />
但这在所有设备上看起来并不好。 我如何像“活动”一样使用100%
和0%
这样的值。 我看到我必须在片段中创建getX()
和setX()
方法的某个地方,但是我不确定如何实现它们。 另外,如果是这样,我是否必须为所有片段实现方法,或者仅为FragmentActivity
实现方法?
ObjectAnimator处理绝对值。 替代解决方案是使用视图动画,因为您可以指定分数
slide_right.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate android:fromXDelta="-100%" android:toXDelta="0%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="1000"/>
</set>
加载动画
Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_right);
view.startAnimation(animation);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.