Анимация Android - зеркальное отражение

Я должен создать анимацию - Зеркальное отражение представление и показать другой.

Ширина в настоящее время показываемого представления уменьшена медленно для обнуления, и после этого ширина view-to-be-shown должна быть увеличена с нуля.

В это время высота идет от currently-shown-height до slightly-decreased-height и назад снова.

Как я могу достигнуть этого... использование ViewFlipper.

28
задан Gaurav Vaish 29 July 2010 в 15:09
поделиться

1 ответ

Вы можете сделать это с помощью ScaleAnimations, установленного на 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>

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>

Затем в приложении я установил их в ViewFlipper следующим образом:

mViewFlipper.setInAnimation(context, R.anim.grow_from_middle);
mViewFlipper.setOutAnimation(context, R.anim.shrink_to_middle);

Как я уже сказал, это не совсем то, что вы описали, но это довольно близко и поможет вам начать.

--EDIT--

Вот код, использующий 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" />

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" />
43
ответ дан 28 November 2019 в 03:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: