Estou tentando fazer uma animação que deslizeda posição atual para o centro da tela e depois virar. Tenho cada componente móvel funcionando corretamente, mas depois que todos são colocados em um conjunto com o deslocamento inicial, a animação não inicia até que esse deslocamento termine e ele executa todas as animações Qualquer ajuda sobre isso é muito apreciada.
slide_down.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Slide down -->
<translate
android:fromYDelta="0%"
android:toYDelta="100%"
android:duration="1000"/>
<!-- Set alpha to fully opaque -->
<alpha
android:fromAlpha="0.8"
android:toAlpha="1.0"
android:duration="1000" />
<!-- Flip image once it"s in the center -->
<!-- ***** HERE IS THE only offset I set ****** -->
<scale
android:fromXScale="0.0"
android:toXScale="1.0"
android:pivotX="50%"
android:fromYScale="1.0"
android:toYScale="1.0"
android:startOffset="1000"
android:duration="200" />
</set>
código de chamada
Animation anim = AnimationUtils.loadAnimation(getActivity(), slideDirection);
anim.setAnimationListener(new AnimationListener() {
public void onAnimationStart(Animation animation) {
}
public void onAnimationRepeat(Animation animation) {
}
public void onAnimationEnd(Animation animation) {
mCallBack.categorySelected(view.getId());
}
});
view.clearAnimation();
view.startAnimation(anim);
Obrigado, Dman
Respostas:
2 para resposta № 1As compensações da animação sempre são calculadas desde o início da animação. Se você deseja que suas animações sejam reproduzidas uma a uma, é necessário calcular as compensações.
A seguir, a tradução será reproduzida por 1 segundo e, em seguida, alfa por mais um segundo, seguida da escala por 200ms -
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Slide down -->
<translate
android:fromYDelta="0%"
android:toYDelta="100%"
android:duration="1000"/>
<!-- Set alpha to fully opaque -->
<alpha
android:fromAlpha="0.8"
android:toAlpha="1.0"
android:startOffset="1000"
android:duration="1000" />
<!-- Flip image once it"s in the center -->
<!-- ***** HERE IS THE only offset I set ****** -->
<scale
android:fromXScale="0.0"
android:toXScale="1.0"
android:pivotX="50%"
android:fromYScale="1.0"
android:toYScale="1.0"
android:startOffset="2000"
android:duration="200" />
</set>