package at.favre.lib.dali.builder.animation; import android.content.Context; import android.graphics.Bitmap; import java.util.ArrayList; import java.util.List; import at.favre.lib.dali.Dali; /** * Created by PatrickF on 29.05.2014. */ public class BlurKeyFrameManager { public static BlurKeyFrameManager createLinearKeyFrames(int keyFrames,int duration, int inSampleSize, int endBlurRadius, int endBrightness) { BlurKeyFrameManager man = new BlurKeyFrameManager(); int durationPerFrame = (int) ((float) duration / (float) keyFrames); int radiusIncrement = (int) ((float) endBlurRadius / (float) keyFrames); int brightnessIncrement = 0; if(endBrightness != 0) { brightnessIncrement = (int) ((float) endBrightness / (float) keyFrames);; } for (int i = 0; i < keyFrames; i++) { man.addKeyFrame(new BlurKeyFrame(inSampleSize,radiusIncrement*(i+1),brightnessIncrement*(i+1),durationPerFrame)); } return man; } public static BlurKeyFrameManager createLowMemoryKeyframes(int keyFrames,int duration, int startInsampleSize, int endBlurRadius) { BlurKeyFrameManager man = new BlurKeyFrameManager(); int durationPerFrame = (int) ((float) duration / (float) keyFrames); int radiusIncrement = (int) ((float) endBlurRadius / (float) keyFrames); for (int i = 0; i < keyFrames; i++) { man.addKeyFrame(new BlurKeyFrame(startInsampleSize,radiusIncrement*(i+1),0,durationPerFrame)); } return man; } private List<BlurKeyFrame> keyFrames = new ArrayList<BlurKeyFrame>(); public BlurKeyFrameManager() { } public void addKeyFrame(BlurKeyFrame frame) { keyFrames.add(frame); } protected KeyFrameData prepareFrames(Context ctx, Bitmap original) { return new KeyFrameData(ctx, original, keyFrames); } public List<BlurKeyFrame> getKeyFrames() { return keyFrames; } public static class KeyFrameData { private Bitmap original; private List<Bitmap> frames = new ArrayList<Bitmap>(); private List<BlurKeyFrame> keyFrameConfigList; public KeyFrameData(Context ctx, Bitmap original,List<BlurKeyFrame> keyFrames) { this.original = original; this.keyFrameConfigList = keyFrames; Dali dali = Dali.create(ctx); frames.add(original); for (BlurKeyFrame keyFrame : keyFrames) { frames.add(keyFrame.prepareFrame(original,dali)); } } public List<BlurKeyFrame> getKeyFrameConfigList() { return keyFrameConfigList; } public List<Bitmap> getFrames() { return frames; } public Bitmap getOriginal() { return original; } } @Override public String toString() { return keyFrames.toString(); } }