繁体   English   中英

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

[英]Animating a horizontal translation of Fragments with 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实现方法?

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM