Android动画 - 翻转

Gau*_*ish 28 animation android flip

我需要创建一个动画 - 翻转视图并显示另一个视图.

当前显示的视图的宽度缓慢减小到零,之后,要显示的视图的宽度必须从零增加.

在此期间,高度从当前显示的高度变为略微减小的高度,然后再返回.

我怎样才能实现这一点...使用ViewFlipper.

Cas*_*eyB 43

你可以用ScaleAnimationsa上的设置来做到这一点ViewFlipper.没有第二个比例,我做了类似的事情.我有两个动画,一个用于视图输出,另一个用于视图.我将在这里发布它们作为起点.

shrink_to_middle.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
        android:interpolator="@android:anim/linear_interpolator"
        android:fromXScale="1.0"
        android:toXScale="1.0"
        android:fromYScale="1.0"
        android:toYScale="0.0"
        android:fillAfter="false"
        android:duration="200" />
    <translate
        android:fromYDelta="0"
        android:toYDelta="50%"
        android:duration="200"/>
</set>
Run Code Online (Sandbox Code Playgroud)

grow_from_middle.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
        android:interpolator="@android:anim/linear_interpolator"
        android:fromXScale="1.0"
        android:toXScale="1.0"
        android:fromYScale="0.0"
        android:toYScale="1.0"
        android:fillAfter="false"
        android:startOffset="200"
        android:duration="200" />
    <translate
        android:fromYDelta="50%"
        android:toYDelta="0"
        android:startOffset="200"
        android:duration="200"/>
</set>
Run Code Online (Sandbox Code Playgroud)

然后在应用程序中我将它们设置为ViewFlipper这样:

mViewFlipper.setInAnimation(context, R.anim.grow_from_middle);
mViewFlipper.setOutAnimation(context, R.anim.shrink_to_middle);
Run Code Online (Sandbox Code Playgroud)

就像我说的那样,这不完全是你所描述的,但它非常接近并且会让你开始.

- 编辑 -

这是使用pivotX和pivotY的代码(在我的例子中只是pivotY):

shrink_to_middle.xml

<?xml version="1.0" encoding="utf-8"?>
<scale
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator"
    android:fromXScale="1.0"
    android:toXScale="1.0"
    android:fromYScale="1.0"
    android:toYScale="0.0"
    android:pivotY="50%"
    android:fillAfter="false"
    android:duration="200" />
Run Code Online (Sandbox Code Playgroud)

grow_from_middle.xml

<?xml version="1.0" encoding="utf-8"?>
<scale
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator"
    android:fromXScale="1.0"
    android:toXScale="1.0"
    android:fromYScale="0.0"
    android:toYScale="1.0"
    android:pivotY="50%"
    android:fillAfter="false"
    android:startOffset="200"
    android:duration="200" />
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你的指针.绝对是一个好的首发.而不是使用另一个动画 - 翻译,我做了一个pivotX = 50%,pivotY = 50%和其他一些变化.谢谢你的首发 (2认同)