我想用动画替换一个 fragment ,但它每次都必须是动态的,即它将从我点击屏幕的点开始,但 fragmentTransaction.setCustomAnimations
方法使用预定义的动画在这样的 anim 文件夹中定义:
fragmentTransaction.setCustomAnimations(R.anim.bounce, R.anim.bounce);
我创建了 ScaleAnimation
的对象来满足我这样的需要:
ScaleAnimation animation = new ScaleAnimation(fromX,ToX,fromY,toY,pivitX,pivotY);
animation.setDuration(500);
fragmentTransaction.setCustomAnimations
方法不接受 scaleAnimation
它只接受 int。那么如何在替换fragment的同时实现动态动画。
最佳答案
您可以创建自定义动画集并使用它们。
创建一个 .xml 文件并将其放在“res/anim”文件夹中,然后在代码中使用其资源 ID:
fragmentTransaction.setCustomAnimations(R.anim.your_animation, R.anim.your_animation);
这是动画示例:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_shortAnimTime"
android:fromXDelta="0"
android:fromYDelta="0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:toXDelta="-10%p"
android:toYDelta="1%p"/>
<scale
android:duration="@android:integer/config_shortAnimTime"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:toXScale="0.98"
android:toYScale="0.98"/>
<translate
android:duration="@android:integer/config_shortAnimTime"
android:fromXDelta="-10%p"
android:fromYDelta="1%p"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:startOffset="@android:integer/config_shortAnimTime"
android:toXDelta="100%p"
android:toYDelta="5%p"/>
<scale
android:duration="@android:integer/config_shortAnimTime"
android:fromXScale="0.98"
android:fromYScale="0.98"
android:startOffset="@android:integer/config_shortAnimTime"
android:toXScale="0.9"
android:toYScale="0.9"/>
</set>
关于android - 替换 Fragment 时的动态缩放动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34225445/