Как я могу применить изменения к позиции представления после анимации?

Я применил TranslateAnimation к EditText с FillAfter=true, чтобы сохранить его положение в конце анимации. Анимация работает правильно, но проблема в том, что я больше не могу войти в текст редактирования. Я думаю, что это связано с тем, что анимация влияет только на рендеринг без изменения фактических координат вида.

Есть ли возможность сохранить окончательные координаты с нормально работающим текстом редактирования?

Спасибо Даниэле

1 ответ

К сожалению, анимация отображает только необработанные пиксели анимированного элемента, но не его положение "андроид-интерна". Лучшее решение (которое я могу придумать) - это использовать AnimationListener и правильно установить положение анимированного элемента после завершения анимации. Вот мой код для слайда В поисковой оболочке:

public void toggleSearchWrapper() {

    AnimationSet set = new AnimationSet(true);

    // slideDown Animation
    Animation animation = new TranslateAnimation(
          Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f,
          Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 1.0f
    );



    animation.setDuration(300);
    animation.setFillEnabled(false);


    animation.setAnimationListener(new AnimationListener() {

        @Override
        public void onAnimationStart(final Animation anim) {
        };

        @Override
        public void onAnimationRepeat(final Animation anim) {
        };

        @Override
        public void onAnimationEnd(final Animation anim) {


            // clear animation to prevent flicker
            searchWrapper.clearAnimation();

            // set new "real" position of wrapper
            RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
            lp.addRule(RelativeLayout.BELOW, R.id.branchFinderIncludeHeader);
            searchWrapper.setLayoutParams(lp);

        }   

    });


    set.addAnimation(animation);

    // set and start animation
    searchWrapper.startAnimation(animation);



}
Другие вопросы по тегам