2012-01-13 4 views
3

Я хотел переместить некоторый линейный макет с помощью TranslateAnimation. У меня 2 проблемы. Мой базовый SDK - Android 2.2.TranslateAnimation Не работает как ожидалось

  1. Даже когда анимация закончена, осязаемая область в линейной компоновке вообще не перемещается.
  2. Экран вспыхнул на пару кадров сразу после окончания анимации.

Во-первых, я не использовал AnimationListener и LinearLayout.layout(). Когда я закончил анимацию, используя следующий код, позиция представления действительно изменилась. Но казалось, что осязаемая область не была перемещена с видом во время анимации. В результате, когда я попытался щелкнуть любую из кнопок на представлении после анимации, ничего не произошло. Если я щелкнул исходную область кнопок (исходная область перед анимацией), активизировалась функция on_click_listener.

Затем я удалил эту строку кода,

tmpAnimation.setFillAfter(true); 

и попытался AnimationListener и LinearLayout.layout(). Это помогло и обошлось в 1-й проблеме.

Но возникла проблема 2. После анимации некоторые из моих линейных макетов будут мигать в течение нескольких кадров, а затем вернутся к порядку.

Я попытался midLinearlayout.requestLayout(), он не work.I пытался реализовать Animation.AnimationListener и переопределить onAnimationEnd, как кто-то сказал, но он не работает.

TranslateAnimation tmpAnimation = new TranslateAnimation(midLinearlayout.getLeft(),midLinearlayout.getLeft(),midLinearlayout.getTop(),midLinearlayout.getTop()+100); 

//tmpAnimation.setFillAfter(true); 

tmpAnimation.setDuration(2000); 
tmpAnimation.setAnimationListener(new Animation.AnimationListener() { 
        @Override 
        public void onAnimationStart(Animation animation) { 
         //To change body of implemented methods use File | Settings | File Templates. 
        } 

        @Override 
        public void onAnimationEnd(Animation animation) { 
         Log.v("onflingTest","top="+midLinearlayout.getTop()+" left="+midLinearlayout.getLeft()+" right" + midLinearlayout.getRight()); 
         midLinearlayout.layout(midLinearlayout.getLeft(), midLinearlayout.getTop()+100, midLinearlayout.getLeft() + midLinearlayout.getMeasuredWidth(), midLinearlayout.getTop()+ 100 + midLinearlayout.getMeasuredHeight());        
        } 

        @Override 
        public void onAnimationRepeat(Animation animation) { 
         //To change body of implemented methods use File | Settings | File Templates. 
        } 
       }); 

Я решить эту проблему, используя код:

linearlayout.clearAnimation(); 

увидеть ссылку: EditText stucks after animation and alive back on scrolling......?

ответ

1

Я решил проблему с помощью почтовой View.GONE in animation complete

Проблема заключается в том, что после компоновки B завершает анимацию я пропустил, чтобы сделать представление в виде View.GONE. Добавление View.GONE возвращает элементы управления.

+0

Благодарим вас за ответ! Но я хочу щелкнуть по кнопке на linearlayout после анимации. – peanut