package com.flyco.dialog.widget.base; import android.animation.ObjectAnimator; import android.content.Context; import android.view.Gravity; import android.view.View; import android.view.animation.Animation; import android.view.animation.TranslateAnimation; import android.widget.FrameLayout; import com.flyco.animation.BaseAnimatorSet; public abstract class BottomBaseDialog<T extends BottomBaseDialog<T>> extends BottomTopBaseDialog<T> { public BottomBaseDialog(Context context, View animateView) { super(context); mAnimateView = animateView; mInnerShowAnim = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 1f, Animation.RELATIVE_TO_SELF, 0); mInnerDismissAnim = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 1); } public BottomBaseDialog(Context context) { this(context, null); } @Override protected void onStart() { super.onStart(); mLlTop.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT)); mLlTop.setGravity(Gravity.BOTTOM); getWindow().setGravity(Gravity.BOTTOM); mLlTop.setPadding(mLeft, mTop, mRight, mBottom); } @Override public void onAttachedToWindow() { super.onAttachedToWindow(); showWithAnim(); } @Override public void dismiss() { dismissWithAnim(); } private BaseAnimatorSet mWindowInAs; private BaseAnimatorSet mWindowOutAs; @Override protected BaseAnimatorSet getWindowInAs() { if (mWindowInAs == null) { mWindowInAs = new WindowInAs(); } return mWindowInAs; } @Override protected BaseAnimatorSet getWindowOutAs() { if (mWindowOutAs == null) { mWindowOutAs = new WindowOutAs(); } return mWindowOutAs; } private class WindowInAs extends BaseAnimatorSet { @Override public void setAnimation(View view) { ObjectAnimator oa1 = ObjectAnimator.ofFloat(view, "scaleX", 1f, 0.9f); ObjectAnimator oa2 = ObjectAnimator.ofFloat(view, "scaleY", 1f, 0.9f); animatorSet.playTogether(oa1, oa2); } } private class WindowOutAs extends BaseAnimatorSet { @Override public void setAnimation(View view) { ObjectAnimator oa1 = ObjectAnimator.ofFloat(view, "scaleX", 0.9f, 1f); ObjectAnimator oa2 = ObjectAnimator.ofFloat(view, "scaleY", 0.9f, 1f); animatorSet.playTogether(oa1, oa2); } } }