首页 > 解决方案 > Android PopupWindow dismiss 中途中断涟漪效应

问题描述

我有一个 PopupWindow,它使用带有单个Button.

Button已经android:background="?attr/selectableItemBackground"开始产生连锁反应。如果没有dismiss被调用,涟漪效应会很好地工作。

当我从 中调用dismisspopupwindow 时OnClickListener,涟漪效应在解散的中途被打断。您可以从波纹中看到圆圈,但随着 PopupWindow 的消失,它并没有走到边缘,波纹在中途被打断,您可以在弹出窗口消失时看到一个圆圈。

就好像解雇正在中途停止动画一样。任何人都知道为什么以及如何解决它?

标签: javaandroidkotlinmaterial-designandroid-popupwindow

解决方案


我遇到了这个问题,并努力解决了 2 周。是的,dismiss Popup Window 是罪魁祸首,dismiss() 动作会停止/清除所有待处理的动画。

这是我为显示单击自定义 PopupWindow 中的项目时的连锁反应所做的操作:

    // Define click listener for the ViewHolder's View.
    view.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ViewCompat.postOnAnimationDelayed(v, new Runnable()
            {
                @Override
                public void run()
                {
                    Log.i("test", "Position: "+position);
                    // Perform Action
                }
            }, 150); // Delay the onClick action

        }
    });

这会将 onClick 操作延迟 150 微秒,这将允许在触发弹出窗口之前发生连锁反应。

您必须调整 onClick 延迟/持续时间和关闭淡入淡出动画持续时间以使其按预期工作。


推荐阅读