【问题标题】:FragmentTransacation with slide in/out animation on >4 performanceFragmentTransacation 具有 >4 性能的滑入/滑出动画
【发布时间】:2013-08-01 06:41:44
【问题描述】:

我正在尝试使用滑入/滑出动画来实现片段事务。 我正在开发至少 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 及更高版本上实现,我将不胜感激。

谢谢。

【问题讨论】:

    标签: android android-fragments android-animation fragmenttransaction objectanimator


    【解决方案1】:

    试试这个:

    if (mLastMenuWeight > mMenuWeight) {
    transaction.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
    }else{transaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left);}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-28
      • 1970-01-01
      相关资源
      最近更新 更多