Udi*_*shi 6 android android-animation android-fragments objectanimator fragmenttransaction
我正在尝试使用幻灯片进/出动画实现片段事务.我正在开发至少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);
}
}
Run Code Online (Sandbox Code Playgroud)
滑入和滑出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"/>
Run Code Online (Sandbox Code Playgroud)
<?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"/>
Run Code Online (Sandbox Code Playgroud)
动画效果很好,你可以看到我使用了自定义属性yFraction.但性能非常糟糕......在某些平板电脑中,我注意到动画期间有一条水平的白线(大约3像素高),在其他智能手机设备中,它只是变慢(不是持续时间慢而是闪烁).
如果我将valueFrom&valueTo设置为适合视图维度,我找到了修复它的方法,但它不是通用的,并且需要0到1才能对所有视图都通用
如果有人可以帮助我或告诉我是否有另一种方法在Android 14及更高版本上实现,我将不胜感激.
谢谢.
小智 -4
尝试这个:
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);}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3870 次 |
| 最近记录: |