onCreateDismissAnimation
返回一个Animation,在BasePopup消失之前执行,动画完毕后消失,返回为null则不执行动画。
示例
public class DemoPopup extends BasePopupWindow {
public DemoPopup(Context context) {
super(context);
setContentView(R.layout.popup_normal);
}
@Override
protected Animation onCreateDismissAnimation() {
Animation showAnimation = new ScaleAnimation(1f, 0, 1f, 0);
showAnimation.setDuration(500);
return showAnimation;
}
}
onCreateDismissAnimator
返回一个Animator,在BasePopup消失之前执行,动画完毕后消失,返回为null则不执行动画。
示例
public class DemoPopup extends BasePopupWindow {
public DemoPopup(Context context) {
super(context);
setContentView(R.layout.popup_normal);
//不裁剪contentView
setClipChildren(false);
}
@Override
public void showPopupWindow() {
getDisplayAnimateView().setTranslationY(0);
super.showPopupWindow();
}
@Override
protected Animator onCreateDismissAnimator() {
ObjectAnimator showAnimator = ObjectAnimator.ofFloat(getDisplayAnimateView(), View.TRANSLATION_Y, 0, getHeight() * 0.75f);
showAnimator.setDuration(1000);
showAnimator.setInterpolator(new OvershootInterpolator(-6));
return showAnimator;
}
}
提示 Animation的优先级比Animator优先级高,两者都传则取Animation 如果在创建动画时需要宽高信息,请覆写onCreateShowAnimator(int width, int height)方法(该方法在2.2.2版本中添加) 如果您不想写那么繁琐的动画,建议升级到2.2.4或更高的版本并使用AnimationHelper,详见文档 |
---|