2016-08-29 4 views
0

グッドday.Androidオブジェクトアニメーターのように焼成キープ!私が間違って行ったことを助けてください?オブジェクトアニメーター更新リスナーが!何もそれを停止しないのに役立ちます狂った何のように発射維持される狂気

AnimatedColorSpan span = new AnimatedColorSpan(context); 
    final SpannableString spannableString = new SpannableString(textToShow); 
    this.spannableString = spannableString; 
    String substring = textToShow.toLowerCase(); 
    int start = textToShow.toLowerCase().indexOf(substring); 
    int end = start + substring.length(); 
    spannableString.setSpan(span, start, end, 0); 

    objectAnimator = ObjectAnimator.ofFloat(
      span, ANIMATED_COLOR_SPAN_FLOAT_PROPERTY, 0, 100); 
    objectAnimator.setEvaluator(new FloatEvaluator()); 
    objectAnimator.addUpdateListener(updateListener); 
    objectAnimator.setInterpolator(new LinearInterpolator()); 
    objectAnimator.setDuration(DURATION); 
    objectAnimator.setRepeatCount(ValueAnimator.INFINITE); 
    objectAnimator.start(); 

private static final Property<AnimatedColorSpan, Float> ANIMATED_COLOR_SPAN_FLOAT_PROPERTY 
     = new Property<AnimatedColorSpan, Float>(Float.class, "ANIMATED_COLOR_SPAN_FLOAT_PROPERTY") { 
    @Override 
    public void set(AnimatedColorSpan span, Float value) { 
     span.setTranslateXPercentage(value); 
    } 

    @Override 
    public Float get(AnimatedColorSpan span) { 
     return span.getTranslateXPercentage(); 
    } 
}; 

public static RainbowAnimation get() { 
    return rainbowAnimation; 
} 

public void stopRainbowAnimation() { 
    stopCalled = true; 
    if (objectAnimator != null) { 
     objectAnimator.removeUpdateListener(updateListener); 
     objectAnimator.cancel(); 
     objectAnimator.removeAllListeners(); 
     objectAnimator.removeAllUpdateListeners(); 
     textViewToAttach.setText(textToShow); 
    } 
    System.gc(); 
} 


private ValueAnimator.AnimatorUpdateListener updateListener = new ValueAnimator.AnimatorUpdateListener() { 
    @Override 
    public void onAnimationUpdate(ValueAnimator valueAnimator) { 
     if (!stopCalled) { 
      textViewToAttach.setText(spannableString); 
     } else { 
      if (objectAnimator != null) { 
       objectAnimator.setDuration(10); 
       objectAnimator.removeUpdateListener(this); 
       objectAnimator = null; 
      } 
     } 
    } 
}; 

私はここですべてを試してみました、あなたは私が削除することが可能であるが、それだけでログインし続け、ヒープは地獄のように成長するので、それは狂気私を駆動するすべてのものを削除しています見ることができます! ここで間違っていたコードの人に何が間違っていますか?

答えて

2

あなたがアニメーターコール

objectAnimator.end(); 

を停止したい場合は、繰り返していないアニメーションをしたい場合は、それが再びアニメーションを繰り返すことはしません

objectAnimator.setRepeatCount(ValueAnimator.INFINITE); 

この行をコメントしてください。

+0

私はアニメーションを手動で無効にする限りアニメーションを繰り返すことを望んでいますが、その間に私はこのコードを試してみます。確定的に何が起こっているか見る –

+0

まだうまくいきません.....狂ったようなアニメーション –

関連する問題