Android-анимация не влияет на макет - PullRequest
0 голосов
/ 10 сентября 2010

Анимации влияют только на отрисовку виджетов, что означает, что после завершения анимации мой FrameLayout screenMain все еще находится в своем прежнем местоположении, вам нужно установить FrameLayout в следующем месте.

screenMain.setOnClickListener(new View.OnClickListener() {
        int i = 0;

        @Override
        public void onClick(View view) {
            if (i % 2 == 0) {
                screenMain.startAnimation(translate);
                sh.startAnimation(translate);
                sg.startAnimation(translate);
                i++;
            } else {
                screenMain.startAnimation(translateb);
                sh.startAnimation(translateb);
                sg.startAnimation(translateb);
                i++;

            }

        }

    });

Код анимации

<?xml version="1.0" encoding="utf-8"?>
<set>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0.0"
        android:toXDelta="0.0"
        android:fromYDelta="0.0"
        android:toYDelta="180.0"
        android:duration="200"
        android:fillAfter="true"
        android:fillEnabled="true"
        />
</set>

Код анимацииb

<?xml version="1.0" encoding="utf-8"?>
<set>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0.0" 
        android:toXDelta="0.0" 
        android:fromYDelta="180.0"
    android:toYDelta="0.0" 
        android:duration="200" 
        android:fillAfter="true"
    android:fillEnabled="true" />
</set>

1 Ответ

0 голосов
/ 23 февраля 2011

Чтобы изменить позицию представления, вам нужно вызвать view.setLayoutParams ().Простой способ добиться этого эффекта анимации - сначала вызвать setLayoutParams () до конечной позиции, а затем вызвать TranslateAnimation из исходного местоположения.

Вот более подробная информация о том, как: http://www.clingmarks.com/?p=400

...