2016-07-19 6 views
1

Я пытаюсь найти анимацию, найденную здесь.Android Fragment Transaction custom Animation

Android 3d animation like Google Now Launcher Menu Animation

Тем не менее, похоже, что я не могу использовать objectAnimator, потому что я использую поддержки библиотеки фрагментов. Когда я попытался использовать код по вышеуказанной ссылке, у меня появилась ошибка, указывающая, что Неизвестная анимация: objectAnimator.

Как я могу выполнить такую ​​анимацию при добавлении/удалении фрагментов при использовании библиотеки поддержки для фрагментов?

UPDATE

Согласно ответу из Деев ниже, я обновил XML-анимации для остальных.

gla_back_come.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500"> 

    <alpha 
     android:fromAlpha="1.0" 
     android:toAlpha="0.0" /> 

    <scale 
     android:fromXScale="1" 
     android:toXScale="0" 
     android:fromYScale="1" 
     android:toYScale="0" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:interpolator="@android:anim/accelerate_decelerate_interpolator" /> 

</set> 

gla_back_gone.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" > 

    <alpha 
     android:fromAlpha="0.0" 
     android:toAlpha="1.0" /> 

    <scale 
     android:fromXScale="12.0" 
     android:toXScale="1.0" 
     android:fromYScale="12.0" 
     android:toYScale="1.0" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:interpolator="@android:anim/accelerate_decelerate_interpolator"/> 

</set> 

gla_there_come.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500"> 

    <alpha 
     android:fromAlpha="0.0" 
     android:toAlpha="1.0" /> 

    <scale 
     android:fromXScale="0.0" 
     android:toXScale="1.0" 
     android:fromYScale="0.0" 
     android:toYScale="1.0" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:interpolator="@android:anim/accelerate_decelerate_interpolator"/> 

</set> 

gla_there_gone.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" > 

    <alpha 
     android:fromAlpha="1.0" 
     android:toAlpha="0.0"/> 

    <scale 
     android:fromXScale="1.0" 
     android:toXScale="12.0" 
     android:fromYScale="1.0" 
     android:toYScale="12.0" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:interpolator="@android:anim/accelerate_decelerate_interpolator"/> 

</set> 
+0

это было время, так как я использовал базовые анимации, но я считаю, что интерполяторы должны быть взяты из «@android: аним /» папку, и все они фиксировали с «_interpolator ». Они по сути являются одними и теми же, но они могут отсутствовать в местоположении «@android: интерполятор /» в младших устройствах. Я отредактировал свой ответ с помощью 'accelarate_decelerate_interpolator'. – DeeV

+0

@ DeeV - спасибо! Я буду обновлять свой XML выше, чтобы соответствовать. – Phil

+0

@DeeV - можете ли вы проверить мой обновленный XML для gla_back_gone и gla_back_come анимации? Кажется, они не делают то, что сделал видео-пример. Я думаю, что у меня что-то не так – Phil

ответ

2

Вы бы заменить ObjectAnimator с классическим Animation. Их можно создать примерно таким же образом. Вместо того, чтобы помещать файлы xml в каталог ресурсов animator, вы должны поместить их в каталог ресурсов anim. Сами анимации в XML-файле более конкретно называются. Вместо имен из свойств, то имя анимации, которую требуется выполнить:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@[package:]anim/interpolator_resource" 
    android:shareInterpolator=["true" | "false"] > 
    <alpha 
     android:fromAlpha="float" 
     android:toAlpha="float" /> 
    <scale 
     android:fromXScale="float" 
     android:toXScale="float" 
     android:fromYScale="float" 
     android:toYScale="float" 
     android:pivotX="float" 
     android:pivotY="float" /> 
    <translate 
     android:fromXDelta="float" 
     android:toXDelta="float" 
     android:fromYDelta="float" 
     android:toYDelta="float" /> 
    <rotate 
     android:fromDegrees="float" 
     android:toDegrees="float" 
     android:pivotX="float" 
     android:pivotY="float" /> 
    <set> 
     ... 
    </set> 
</set> 

Так, например, в ответ вы публикуемую, то «gla_there_come.xml» будет идти из этого:

<set xmlns:android="http://schemas.android.com/apk/res/android" > 

    <objectAnimator 
    android:duration="500" 
    android:propertyName="alpha" 
    android:valueFrom="0.0" 
    android:valueTo="1.0" /> 
    <objectAnimator 
    android:duration="500" 
    android:interpolator="@android:interpolator/accelerate_decelerate" 
    android:propertyName="scaleY" 
    android:valueFrom="0" 
    android:valueTo="1" /> 
    <objectAnimator 
    android:duration="500" 
    android:interpolator="@android:interpolator/accelerate_decelerate" 
    android:propertyName="scaleX" 
    android:valueFrom="0" 
    android:valueTo="1" /> 

</set> 

в это:

<set xmlns:android="http://schemas.android.com/apk/res/android" 
    duration="500"> 

    <alpha 
    android:fromAlpha="0.0" 
    android:toAlpha="1.0" /> 

    <scale 
    android:fromXScale="0.0" 
    android:toXScale="1.0" 
    android:fromYScale="0.0" 
    android:toYScale="1.0" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"/> 

</set> 
+0

спасибо! Если у вас есть минута и вы можете добавить конверсию для других, это было бы здорово! Если нет, не беспокойтесь. – Phil

Смежные вопросы