package com.tv.ui.metro.view; import java.util.ArrayList; import java.util.List; import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.view.View; import com.tv.ui.metro.R; public class TranslateAnimatorModel extends AnimatorModel { private static final int DEFAULT_DELTA = 0; private static int MAX_X_DELTA = -1; private static int MAX_Y_DELTA = -1; private int mXDelta = DEFAULT_DELTA; // x delta : + to right, - to left private int mYDelta = DEFAULT_DELTA; // y delta : + to up, - to down public TranslateAnimatorModel(View animatorView) { super(animatorView); if(MAX_X_DELTA == -1){ MAX_X_DELTA = animatorView.getResources().getDimensionPixelSize(R.dimen.MAX_PIVOT_X); MAX_Y_DELTA = animatorView.getResources().getDimensionPixelSize(R.dimen.MAX_PIVOT_Y); } } public int getXDelta() { return mXDelta; } public void setXDelta(int delta) { if (delta < -MAX_X_DELTA || delta > MAX_X_DELTA) { return; } this.mXDelta = delta; } public int getYDelta() { return mYDelta; } public void setYDelta(int delta) { if (delta < -MAX_Y_DELTA || delta > MAX_Y_DELTA) { return; } this.mYDelta = delta; } @Override public List<ValueAnimator> toAnimators() { List<ValueAnimator> result = new ArrayList<ValueAnimator>(); if (mXDelta == 0 && mYDelta == 0) { return result; } if (mXDelta != 0) { float currentX = getAnimatorView().getX(); ObjectAnimator oa = ObjectAnimator.ofFloat(getAnimatorView(), "x", currentX + mXDelta); assembleAnimator(oa); result.add(oa); } if (mYDelta != 0) { float currentY = getAnimatorView().getY(); ObjectAnimator oa = ObjectAnimator.ofFloat(getAnimatorView(), "y", currentY + mYDelta); assembleAnimator(oa); result.add(oa); } return result; } }