2016-06-04 4 views
0

Может ли кто-нибудь помочь мне с моим кодом? То, что я пытаюсь сделать, - это когда imageView будет затронут, он запустит аниматор и переместит вид в центр экрана. После завершения аниматора imageView установит другой onTouch для запуска анимации для масштабирования с 0.0 до 1.0. Но анимация не начнется с новой позиции представления, а начнется с предыдущей позиции представления.Android, как использовать анимацию после аниматора

private void animation() { 
    imageView.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 

      imageView.animate().translationY(height/2).setDuration(1000).setListener(new AnimatorListenerAdapter() { 
       @Override 
       public void onAnimationEnd(Animator animation) { 
        super.onAnimationEnd(animation); 
        imageView.setOnTouchListener(new View.OnTouchListener() { 
         @Override 
         public boolean onTouch(View v, MotionEvent event) { 
          ScaleAnimation scale = new ScaleAnimation(0,1,0,1); 
          scale.setDuration(1000); 
          imageView.startAnimation(scale); 
          return true; 
         } 
        }); 
       } 
      }).start(); 
      return false; 
     } 
    }); 
} 

Ссылку то, что я получил от кода

и ссылку ниже результат я хочу получить с помощью анимации

http://sendvid.com/68q53bh6

ответ

0

А я нашел решение в основном, мне просто нужно обновить стержень.

private void animation() { 
    imageView.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      imageView.animate().translationY(height/2).setDuration(1000).start(); 
      imageView.setOnTouchListener(new View.OnTouchListener() { 
       @Override 
       public boolean onTouch(View v, MotionEvent event) { 
        ScaleAnimation scaleAnimation = new ScaleAnimation(0, 1, 0, 1,imageView.getWidth()/2,imageView.getY() + imageView.getHeight()/2); 
        scaleAnimation.setDuration(1000); 
        imageView.startAnimation(scaleAnimation); 
        return true; 
       } 
      }); 
      return false; 
     } 
    }); 
} 

Кстати спасибо за ответ на мой вопрос

0

Это потому, что вы используя ViewAnimation. Это только оживляет вид, но не сам объект, таким образом координата объекта сохраняется и при перезагрузке новой анимации начинается с неизменным X и Y. Вы должны использовать Android Property Animation API.

Это более простое и ваша проблема будет решена.

+0

из документации: «Этот метод возвращает ViewPropertyAnimator объект, который может быть использован для анимации определенных свойств этого View» 'ViewPropertyAnimator Просмотр # одушевленного()' – pskink

+0

Но, хотя аниматор - это что-то вроде анимации просмотра движения? Итак, когда аниматор заканчивается в точке, эта точка - это точка зрения? Даже я использую ObjectAnimator - это тот же результат. – lsping8

Смежные вопросы