2015-08-17 5 views
0

Если я пытаюсь оживить view внутри OnClick, он не работает:вид Animate внутри OnClick

myImageView.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View view) { 

     view.setAlpha(0.5f); //This works 

     view.animate().scaleX(0.5f).setDuration(300).setInterpolator(
      new BounceInterpolator()).withLayer(); //This doesn't work 
    } 
}); 

В этом коде setAlpha работает правильно, но animate() не делает.

Что не так? Благодарю.

+0

Есть много способов, чтобы оживить, но первое, что я замечаю, что вы не вызываете 'начать()' – Jim

+0

@Jim это то же самое, даже если я позвоню старт(). –

+0

Ваш BounceInterpolator() нуждается в дополнительной спецификации? – ZooMagic

ответ

0

Во-первых, вы никогда не звонили start() в настройке, которую вы создали. Недостаточно позвонить animate() - это просто дает вам ViewPropertyAnimator для этого вида - вам также нужно его запустить.

view.animate() 
     .scaleX(0.5f) 
     ... 
     .start(); 

Во-вторых, помните, что после первого щелчка, любые дальнейшие клики будут появляться не делать ничего, потому что свойства вы воодушевляющих уже на нужные значения конечных.

+0

, независимо от того, что я вызываю 'start()' анимация никогда не происходит, ни в первый раз. –

+1

На самом деле не нужно писать start() Он должен все еще работать –

0

Попробуйте это:

myImageView.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View view) { 
     mImageView.animate().setAlpha(0.5f).scaleX(0.5f).setDuration(300).setInterpolator(
      new BounceInterpolator()).start(); 
    } 
}); 
+0

Нет, это то же самое. –

+0

К сожалению, нет. –

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