Доброго времени суток.
У меня задача менять местами 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, в результате изображение становилось повёрнутым в туже сторону, что и до анимации. В том случае я просто начал применять новое изображение до анимации.
Подскажите, в чём может быть проблема?