请给我一个安卓PopupWindow的底部滑入和滑出的动画
时间: 2024-05-06 14:15:56 浏览: 13
可以使用TranslateAnimation来实现PopupWindow的底部滑入和滑出的动画效果。
以下是一个示例代码:
```java
// PopupWindow底部滑入动画
public void showPopupWindow(View anchorView, View popupView) {
PopupWindow popupWindow = new PopupWindow(popupView, WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
popupWindow.setOutsideTouchable(true);
int[] location = new int[2];
anchorView.getLocationOnScreen(location);
TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, popupView.getHeight(), 0);
translateAnimation.setDuration(300);
popupView.startAnimation(translateAnimation);
popupWindow.showAtLocation(anchorView, Gravity.NO_GRAVITY, location[0], location[1] + anchorView.getHeight());
}
// PopupWindow底部滑出动画
public void dismissPopupWindow(View popupView) {
TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, 0, popupView.getHeight());
translateAnimation.setDuration(300);
popupView.startAnimation(translateAnimation);
translateAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {}
@Override
public void onAnimationEnd(Animation animation) {
popupView.postDelayed(() -> popupWindow.dismiss(), 50);
}
@Override
public void onAnimationRepeat(Animation animation) {}
});
}
```
在showPopupWindow方法中,我们创建了一个PopupWindow,并使用TranslateAnimation实现了底部滑入的动画效果。
在dismissPopupWindow方法中,我们同样使用了TranslateAnimation,不过这次是实现了底部滑出的动画效果。注意在动画结束后,我们使用postDelayed方法来延迟50毫秒关闭PopupWindow,以确保动画可以完全结束再关闭。