android - 替换 Fragment 时的动态缩放动画

标签 android fragment android-animation android-transitions

我想用动画替换一个 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/

相关文章:

java - fragment 和配置更改

Android - ListFragment 中的 getListView() 错误

android - 如何在 BottomSheetDialogFragment 顶部显示另一个 fragment

java - 可绘制位图

Android 在图像上应用自定义贴纸

android - DialogFragment 未显示在监听器中

java - 跳过 181 帧... Android

android - 首次启动 Activity 时,淡入动画不适用于 webview

android - View 在 RotationY 动画接近尾声时消失

java - 如何在一个类(class)中显示我在另一个类(class)中保存的图片