package com.marshalchen.common.uimodule.freeflow.animations; import android.graphics.Rect; import android.util.Pair; import android.view.MotionEvent; import android.view.View; import android.view.View.MeasureSpec; import com.marshalchen.common.uimodule.freeflow.core.FreeFlowContainer; import com.marshalchen.common.uimodule.freeflow.core.FreeFlowItem; import com.marshalchen.common.uimodule.freeflow.core.LayoutChangeset; public class NoAnimationLayoutAnimator implements FreeFlowLayoutAnimator { private LayoutChangeset changes; @Override public LayoutChangeset getChangeSet() { return changes; } @Override public void cancel() { } @Override public void animateChanges(LayoutChangeset changes, FreeFlowContainer callback) { this.changes = changes; for(Pair<FreeFlowItem, Rect> item : changes.getMoved()){ Rect r = item.first.frame; View v = item.first.view; int wms = MeasureSpec.makeMeasureSpec(r.right-r.left, MeasureSpec.EXACTLY); int hms = MeasureSpec.makeMeasureSpec(r.bottom-r.top, MeasureSpec.EXACTLY); v.measure(wms,hms ); v.layout(r.left, r.top, r.right, r.bottom); } callback.onLayoutChangeAnimationsCompleted(this); } @Override public boolean isRunning() { return false; } @Override public void onContainerTouchDown(MotionEvent event) { cancel(); } }