Android PAGView 动画在 Dialog 遮挡时持续播放的实现方法
要实现让动画被Dialog遮挡时也不停止的效果,可以使用WindowManager来实现。以下是一种可能的实现方式:
- 首先,创建一个自定义的ViewGroup,继承自PAGView,并重写onWindowVisibilityChanged()方法。这个方法会在View的可见性发生变化时被调用。
public class CustomPAGView extends PAGView {
// ...
@Override
protected void onWindowVisibilityChanged(int visibility) {
super.onWindowVisibilityChanged(visibility);
// 判断View的可见性
if (visibility == View.VISIBLE) {
// 恢复动画
startAnimation();
} else {
// 停止动画
stopAnimation();
} }
}
- 然后,在你的Dialog中使用WindowManager来添加和移除CustomPAGView。在Dialog显示时,添加CustomPAGView到WindowManager中;在Dialog关闭时,移除CustomPAGView。
// 创建CustomPAGView
CustomPAGView customPAGView = new CustomPAGView(context);
// 创建WindowManager
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
// 添加CustomPAGView到WindowManager
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
windowManager.addView(customPAGView, params);
// 移除CustomPAGView
windowManager.removeView(customPAGView);
这样,当Dialog显示时,CustomPAGView会被覆盖,但是动画仍然会继续播放。当Dialog关闭时,CustomPAGView会被移除,动画会停止播放。
原文地址: https://www.cveoy.top/t/topic/pS8h 著作权归作者所有。请勿转载和采集!