package com.github.florent37.expectanim.core.position; import android.content.Context; import android.support.annotation.DimenRes; import android.support.annotation.Nullable; import android.util.TypedValue; import android.view.View; import com.github.florent37.expectanim.core.AnimExpectation; import java.util.ArrayList; import java.util.List; /** * Created by florentchampigny on 17/02/2017. */ public abstract class PositionAnimExpectation extends AnimExpectation { public abstract Float getCalculatedValueX(View viewToMove); public abstract Float getCalculatedValueY(View viewToMove); private boolean isForPositionY; private boolean isForPositionX; private boolean isForTranslationX; private boolean isForTranslationY; private float margin; @Nullable private Integer marginRes; @Nullable private Float marginDp; public boolean isForPositionY() { return isForPositionY; } public boolean isForPositionX() { return isForPositionX; } public boolean isForTranslationX() { return isForTranslationX; } public boolean isForTranslationY() { return isForTranslationY; } protected void setForPositionY(boolean forPositionY) { isForPositionY = forPositionY; } protected void setForPositionX(boolean forPositionX) { isForPositionX = forPositionX; } protected void setForTranslationX(boolean forTranslationX) { isForTranslationX = forTranslationX; } protected void setForTranslationY(boolean forTranslationY) { isForTranslationY = forTranslationY; } public float getMargin(View view) { if(marginRes != null){ margin = view.getContext().getResources().getDimension(marginRes); } else if(marginDp != null){ margin = dpToPx(view.getContext(), marginDp); } return margin; } public static float dpToPx(Context context, float dp){ return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, context.getResources().getDisplayMetrics()); } public PositionAnimExpectation withMargin(float margin){ this.margin = margin; return this; } public PositionAnimExpectation withMarginDimen(@DimenRes int marginRes){ this.marginRes = marginRes; return this; } public PositionAnimExpectation withMarginDp(float marginDp){ this.marginDp = marginDp; return this; } }