要实现让动画被Dialog遮挡时也不停止的效果,可以使用WindowManager来实现。以下是一种可能的实现方式:

  1. 首先,创建一个自定义的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();
        }    }
}
  1. 然后,在你的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会被移除,动画会停止播放。

Android PAGView 动画在 Dialog 遮挡时持续播放的实现方法

原文地址: https://www.cveoy.top/t/topic/pS8h 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录