package com.plattysoft.leonids.modifiers; import android.view.animation.Interpolator; import android.view.animation.LinearInterpolator; import com.plattysoft.leonids.Particle; public class AlphaModifier implements ParticleModifier { private int mInitialValue; private int mFinalValue; private long mStartTime; private long mEndTime; private float mDuration; private float mValueIncrement; private Interpolator mInterpolator; public AlphaModifier(int initialValue, int finalValue, long startMilis, long endMilis, Interpolator interpolator) { mInitialValue = initialValue; mFinalValue = finalValue; mStartTime = startMilis; mEndTime = endMilis; mDuration = mEndTime - mStartTime; mValueIncrement = mFinalValue-mInitialValue; mInterpolator = interpolator; } public AlphaModifier (int initialValue, int finalValue, long startMilis, long endMilis) { this(initialValue, finalValue, startMilis, endMilis, new LinearInterpolator()); } @Override public void apply(Particle particle, long miliseconds) { if (miliseconds < mStartTime) { particle.mAlpha = mInitialValue; } else if (miliseconds > mEndTime) { particle.mAlpha = mFinalValue; } else { float interpolaterdValue = mInterpolator.getInterpolation((miliseconds- mStartTime)*1f/mDuration); int newAlphaValue = (int) (mInitialValue + mValueIncrement*interpolaterdValue); particle.mAlpha = newAlphaValue; } } }