@lacredin
Программист

Почему view становится не кликабельным после анимации?

Доброго времени суток.
У меня задача менять местами view в LinearLayout c анимацией перемещения.
Вот так я это делаю.
item_view = box_contact_profile.getChildAt(position);
Animation animationUp = AnimationUtils.loadAnimation(getActivity(), R.anim.swap_view_up);
animationUp.setAnimationListener(new Animation.AnimationListener() {
    @Override
    public void onAnimationStart(Animation animation) {
        Animation animationDown = AnimationUtils.loadAnimation(getActivity(), R.anim.swap_view_down);
        box_contact_profile.getChildAt(position - 1).startAnimation(animationDown);
    }

    @Override
    public void onAnimationEnd(Animation animation) {
        View save_view = box_contact_profile.getChildAt(position);
        box_contact_profile.removeViewAt(position);
        v.setTag(position - 1);
        box_contact_profile.addView(save_view, position - 1);
        for (int i = position; i < box_contact_profile.getChildCount(); i++) {
            save_view = box_contact_profile.getChildAt(position);
            ImageButton but = (ImageButton) save_view.findViewById(R.id.but_menu_bloc_contact);
            but.setTag(i);
        }
    }

    @Override
    public void onAnimationRepeat(Animation animation) {

    }
});
item_view.startAnimation(animationUp);


А вот xml анимации:
swap_view_down
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
>
<translate
    android:fromYDelta="0%"
    android:toYDelta="100%"
    android:duration = "200">

</translate>
</set>


swap_view_up
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
>
    <translate
        android:fromYDelta="0%"
        android:toYDelta="-100%"
        android:duration = "200"
        >

    </translate>
</set>


Но после анимации, блок который я переносил(тот для которого вызывал представленный код), перестаёт реагировать на нажатия. Подозреваю, что его местоположение не совпадает с отображением.
Возможно проблема похожа на другую мой проблему. Я вращал изображение и менял само изображение после анимации в функции onAnimationEnd, в результате изображение становилось повёрнутым в туже сторону, что и до анимации. В том случае я просто начал применять новое изображение до анимации.
Подскажите, в чём может быть проблема?
  • Вопрос задан
  • 176 просмотров
Решения вопроса 1
@lacredin Автор вопроса
Программист
Проблема в том, что у анимации есть параметры
android:fillBefore
android:fillAfter
Если android:fillBefore = true, то все преобразования с объектами надо сделать до запуска анимации, а если делать их в конце анимации(в слушателе onAnimationEnd), то отображение объектов вернётся в первоначальное состояние, но сами объекты при этом могут изменить своё местоположение, как это было в моём коде.
А если android:fillAfter = true, то все преобразования надо сделать после анимирования.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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