Android 如何根据屏幕上的各种宽度/高度设备设置objectAnimator的valueFrom/valueTo

Android 如何根据屏幕上的各种宽度/高度设备设置objectAnimator的valueFrom/valueTo,android,animation,android-fragments,android-animation,objectanimator,Android,Animation,Android Fragments,Android Animation,Objectanimator,android.app.fragment的自定义动画只能支持属性animator 通过transaction.setCustomAnimations(),动画 <set> <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" android:duration="1000" android:propertyName="X" android:valueTy

android.app.fragment的自定义动画只能支持属性animator 通过transaction.setCustomAnimations(),动画

<set>
<objectAnimator
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:propertyName="X"
    android:valueType="floatType"
    android:valueFrom="-720"
    android:valueTo="0" />
</set>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="300"
    android:fillAfter="false">
    <alpha
        android:fromAlpha="1.0"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:toAlpha="0.7" />
    <translate
        android:fromXDelta="0"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:toXDelta="-100%p" />
    <scale
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:pivotX="50%p"
        android:pivotY="50%p"
        android:toXScale="0.9"
        android:toYScale="0.9" />
</set>

但是android.support.v4.fragment的自定义动画可以通过transaction.setCustomAnimations()支持帧/帧间动画,例如

<set>
<objectAnimator
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:propertyName="X"
    android:valueType="floatType"
    android:valueFrom="-720"
    android:valueTo="0" />
</set>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="300"
    android:fillAfter="false">
    <alpha
        android:fromAlpha="1.0"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:toAlpha="0.7" />
    <translate
        android:fromXDelta="0"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:toXDelta="-100%p" />
    <scale
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:pivotX="50%p"
        android:pivotY="50%p"
        android:toXScale="0.9"
        android:toYScale="0.9" />
</set>


现在我已经在我的项目中使用了android.app.fragment,因此片段的切换动画只能使用objectAnimator,但问题是如何根据各种宽度/高度屏幕设置valueFrom/valueTo?

如何设置objectAnimator以使用屏幕的百分比或分数可能会对您有所帮助。在stackoverflow和一些博客上有很多解决方案:我通过重写片段的根布局视图setXFraction/getXFraction方法解决了这个问题。你的博客对我也很有帮助。非常感谢!