package com.philliphsu.bottomsheetpickers.date; import android.content.Context; import android.util.AttributeSet; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ViewAnimator; import com.philliphsu.bottomsheetpickers.R; import static com.philliphsu.bottomsheetpickers.date.PagingDayPickerView.DAY_PICKER_INDEX; import static com.philliphsu.bottomsheetpickers.date.PagingDayPickerView.MONTH_PICKER_INDEX; /** * Parent of {@link PagingDayPickerView} and {@link MonthPickerView}. */ final class DayPickerViewAnimator extends ViewAnimator { private final Animation mDayPickerInAnimation; private final Animation mDayPickerOutAnimation; private final Animation mMonthPickerInAnimation; private final Animation mMonthPickerOutAnimation; public DayPickerViewAnimator(Context context, AttributeSet attrs) { super(context, attrs); mDayPickerInAnimation = AnimationUtils.loadAnimation(context, R.anim.bsp_day_picker_slide_up); mDayPickerOutAnimation = AnimationUtils.loadAnimation(context, R.anim.bsp_day_picker_slide_down); mMonthPickerInAnimation = AnimationUtils.loadAnimation(context, R.anim.bsp_month_picker_slide_down); mMonthPickerOutAnimation = AnimationUtils.loadAnimation(context, R.anim.bsp_month_picker_slide_up); } @Override public void setDisplayedChild(int whichChild) { switch (whichChild) { case DAY_PICKER_INDEX: setInAnimation(mDayPickerInAnimation); setOutAnimation(mMonthPickerOutAnimation); break; case MONTH_PICKER_INDEX: setInAnimation(mMonthPickerInAnimation); setOutAnimation(mDayPickerOutAnimation); break; } super.setDisplayedChild(whichChild); } final void setDisplayedChild(int whichChild, boolean animate) { if (animate) { setDisplayedChild(whichChild); } else { setInAnimation(null); setOutAnimation(null); super.setDisplayedChild(whichChild); } } }