2015-09-29 3 views
0

У меня есть случай, когда у меня есть 2 edittext email и пароль. Когда кто-то получает фокус, пишите по электронной почте, подсказка поднимается вверх и становится заголовком. В этой анимации я переводил текст (подсказку) вверх и в то же время масштабировал его до 0.8f. В то же время второй текст говорит, что пароль теряет фокус, если его все еще пусто, я хочу изменить анимацию и вернуть заголовок в качестве подсказки. Подводящий подсказку поднимается вверх как заголовок и возвращается в позицию подсказки, если edittext остается пустым. У меня есть два разных набора анимации для обоих представлений editText, они работают хорошо индивидуально, но при параллельном выполнении один из них не отображается, а подсказка становится невидимой.Множество анимаций для Android несколько параллельное выполнение

Мой код выглядит следующим образом:

email.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View view, boolean b) { 



      if(b && emailAnimated==false){ 
       Log.d("email1", "called"); 

       AnimationSet animSet = new AnimationSet(true); 
       animSet.setFillAfter(true); 
       animSet.setFillEnabled(true); 
       animSet.setDuration(800); 
       TranslateAnimation translate = new TranslateAnimation(0, 0, 0, -60); 
       animSet.addAnimation(translate); 
       ScaleAnimation scale = new ScaleAnimation(1f, 0.8f, 1f, 0.8f); 
       animSet.addAnimation(scale); 
       emailText.startAnimation(animSet); 
       emailAnimated=true; 
      }else if(emailAnimated==true) 
      { 
       Log.d("email2", "called"); 

       AnimationSet animSet = new AnimationSet(true); 
       animSet.setFillAfter(true); 
       animSet.setFillEnabled(true); 
       animSet.setDuration(800); 
       TranslateAnimation translate = new TranslateAnimation(0, 0, 0, -60); 
       animSet.addAnimation(translate); 
       ScaleAnimation scale = new ScaleAnimation(1f, 0.8f, 1f, 0.8f); 
       animSet.addAnimation(scale); 
       //Reverse the animation if losses focus 
       animSet.setInterpolator(new ReverseInterpolator()); 
       emailText.startAnimation(animSet); 
       emailAnimated=false; 

      } 
     } 
    }); 

    password.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View view, boolean b) { 

      if(b && passwordAnimated==false){ 
       Log.d("pass1", "called"); 

       AnimationSet animSet = new AnimationSet(true); 
       animSet.setFillAfter(true); 
       animSet.setFillEnabled(true); 
       animSet.setDuration(800); 
       TranslateAnimation translate = new TranslateAnimation(0, 0, 0, -60); 
       animSet.addAnimation(translate); 
       ScaleAnimation scale = new ScaleAnimation(1f, 0.8f, 1f, 0.8f); 
       animSet.addAnimation(scale); 

       passwordText.startAnimation(animSet); 
       passwordAnimated=true; 
      } 
      else if(passwordAnimated==true) 
      { 
       Log.d("pass2", "called"); 

       AnimationSet animSet = new AnimationSet(true); 
       animSet.setFillAfter(true); 
       animSet.setFillEnabled(true); 
       animSet.setDuration(800); 
       TranslateAnimation translate = new TranslateAnimation(0, 0, 0, -60); 
       animSet.addAnimation(translate); 
       ScaleAnimation scale = new ScaleAnimation(1f, 0.8f, 1f, 0.8f); 
       animSet.addAnimation(scale); 
       animSet.setInterpolator(new ReverseInterpolator()); 

       passwordText.startAnimation(animSet); 
       passwordAnimated=false; 
      } 



     } 
    }); 

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

ответ

0

Вы можете попытаться установить тип слоя двух EditTexts на оборудование во время анимации.

animSet.setAnimationListener(new AnimationListener() { 

      @Override 
      public void onAnimationStart(Animation animation) { 
       emailText.setLayerType(View.LAYER_TYPE_HARDWARE, null); 
      } 

      @Override 
      public void onAnimationRepeat(Animation animation) { 
      } 

      @Override 
      public void onAnimationEnd(Animation animation) { 
       emailText.setLayerType(View.LAYER_TYPE_NONE, null); 
      } 
     });