2016-01-23 4 views
1

Я пытаюсь создать анимацию, похожую на анимацию двойного касания instagram, где сердце масштабируется от центра во время затухания, а затем оно остается видимым на некоторое время, а затем масштабируется до центр выцветание.анимация анимации сердца Instagram - анимация FadeScale

Я использую эту анимацию:

public void animateHeart(final ImageView view) { 
AnimationSet animation = new AnimationSet(true); 
animation.addAnimation(new AlphaAnimation(0.0f, 1.0f)); 
animation.addAnimation(new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f, 
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f)); 
animation.setDuration(700); 
animation.setRepeatMode(Animation.REVERSE); 
view.startAnimation(animation); 
} 

Это хорошо работает для появления анимации, но анимация не меняет. Кроме того, я хочу, чтобы он анимировался только один раз.

Может кто-нибудь сказать мне, что я делаю неправильно? Спасибо заранее.

ответ

4

Вы начинаете только один маштаб и альфа-анимацию с помощью вашего кода.

Эта линия:

animation.setRepeatMode(Animation.REVERSE); 

по-видимому, не очень хорошо работает в AnimationSet, так что вы должны применить его к каждой анимации отдельно. Я бы рекомендовал что-то вроде этого:

public void animateHeart(final ImageView view) { 
    ScaleAnimation scaleAnimation = new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f, 
      Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); 
    prepareAnimation(scaleAnimation); 

    AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f); 
    prepareAnimation(alphaAnimation); 

    AnimationSet animation = new AnimationSet(true); 
    animation.addAnimation(alphaAnimation); 
    animation.addAnimation(scaleAnimation); 
    animation.setDuration(700); 
    animation.setFillAfter(true); 

    view.startAnimation(animation); 

} 

private Animation prepareAnimation(Animation animation){ 
    animation.setRepeatCount(1); 
    animation.setRepeatMode(Animation.REVERSE); 
    return animation; 
} 

Dont забыть

animation.setFillAfter(true); 

Или ваше сердце будет появляться, когда анимация закончена.

+0

Благодарим за помощь –

-1

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

+0

Спасибо. Кто-то ответил, и это сработало. Хотя я ищу дополнительную помощь с другой, так что не могли бы вы помочь? –

+0

Зависит от того, что это такое, я могу попробовать. Вы собираетесь задать вопрос или как это сделать? – Dave

+0

Могу ли я отправить вам письмо? Если да, пожалуйста, оставьте сообщение в комментарии. Спасибо –

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