我正在尝试使用滑入/滑出动画来实现片段事务。我正在开发至少 14 个 sdk,所以 ObjectAnimator 是我唯一的选择(还有其他方法吗?据我了解,翻译动画不可用)。
代码非常简单:
AnimationView.java - 包装类
public class AnimationView extends LinearLayout {
public AnimationView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public float getYFraction() {
return getHeight();
}
public void setYFraction(float yFraction) {
final int height = this.getHeight();
setY((height > 0) ? (yFraction * height) : -9999);
}
}
滑入和滑出 xml
<?xml version="1.0" encoding="utf-8"?>
<set>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:propertyName="yFraction"
android:valueType="floatType"
android:valueFrom="-1"
android:valueTo="0"
android:duration="600"/>
<?xml version="1.0" encoding="utf-8"?>
<set>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:propertyName="yFraction"
android:valueType="floatType"
android:valueFrom="0"
android:valueTo="1"
android:duration="600"/>
动画效果很好,你可以看到我使用了自定义属性 yFraction。但是性能非常糟糕......在一些平板电脑中,我注意到动画期间有一条水平白线(大约 3 px 高度),在其他智能手机设备中它只是变慢(不是持续时间变慢,而是闪烁)。
如果我将 valueFrom 和 valueTo 设置为适合视图尺寸,我找到了一种解决方法,但它不是通用的,需要 0 到 1 才能对所有视图通用
如果有人可以帮助我或告诉我是否有其他方法可以在 android 14 及更高版本上实现,我将不胜感激。
谢谢。