package com.github.florent37.expectanim.core.position;
import android.content.Context;
import android.view.Gravity;
import android.view.View;
import android.view.WindowManager;
/**
* Created by florentchampigny on 17/02/2017.
*/
public class PositionAnimExpectationOutOfScreen extends PositionAnimExpectation {
private WindowManager windowManager;
private int[] gravities;
public PositionAnimExpectationOutOfScreen(int[] gravities) {
this.gravities = gravities;
setForPositionX(true);
setForPositionY(true);
}
private boolean contains(int gravity) {
for (int g : gravities) {
if (g == gravity)
return true;
}
return false;
}
@Override
public Float getCalculatedValueX(View viewToMove) {
if (contains(Gravity.RIGHT) || contains(Gravity.END)) {
if (windowManager == null) {
windowManager = (WindowManager) viewToMove.getContext().getSystemService(Context.WINDOW_SERVICE);
}
return (float) windowManager.getDefaultDisplay().getWidth();
} else if (contains(Gravity.LEFT) || contains(Gravity.START)) {
return -1f * viewToMove.getWidth();
} else
return null;
}
@Override
public Float getCalculatedValueY(View viewToMove) {
if (contains(Gravity.BOTTOM)) {
if (windowManager == null) {
windowManager = (WindowManager) viewToMove.getContext().getSystemService(Context.WINDOW_SERVICE);
}
return (float) windowManager.getDefaultDisplay().getHeight();
} else if (contains(Gravity.TOP)) {
return -1f * viewToMove.getHeight();
} else
return null;
}
}