package com.wenming.weiswift.ui.common; import android.animation.ValueAnimator; import android.app.Activity; import android.content.Context; import android.view.View; import android.view.WindowManager; import android.widget.PopupWindow; /** * Created by wenmingvs on 16/6/5. */ public class BasePopupWindow extends PopupWindow { private Activity mActivity; private long mAnimatorDuration; public BasePopupWindow(Context context, Activity activity, long animatorduration) { super(context); mActivity = activity; mAnimatorDuration = animatorduration; } /** * 调整窗口的透明度 * * @param from * @param to */ private void setOutBackground(float from, float to) { final WindowManager.LayoutParams lp = mActivity.getWindow().getAttributes(); ValueAnimator valueAnimator = ValueAnimator.ofFloat(from, to); valueAnimator.setDuration(mAnimatorDuration); valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { lp.alpha = (float) animation.getAnimatedValue(); mActivity.getWindow().setAttributes(lp); } }); valueAnimator.start(); } @Override public void showAtLocation(View parent, int gravity, int x, int y) { super.showAtLocation(parent, gravity, x, y); setOutBackground(1.0f, 0.5f); } @Override public void dismiss() { super.dismiss(); setOutBackground(0.5f, 1.0f); } }