使用objectAnimator动画片段的水平平移

时间:2014-07-16 04:52:59

标签: android android-fragments android-animation objectanimator

我希望将片段之间的过渡设置为水平滑入和滑出。

问题是,现在我的objectAnimator,我对valueTovalueFrom字段进行了硬编码,如下所示:


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

1 个答案:

答案 0 :(得分:0)

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);