Android PopupWindow dismiss 在中途中断涟漪效果
Android PopupWindow dismiss interrupts the ripple effect half way through
我有一个 PopupWindow,它使用带有单个 Button
的自定义布局。
Button
已 android:background="?attr/selectableItemBackground"
设置为具有涟漪效应。如果没有 dismiss
调用,连锁反应效果很好。
当我在 OnClickListener
的弹出窗口上调用 dismiss
时,涟漪效果在关闭过程中被打断。您可以从波纹中看到圆圈,但随着 PopupWindow 逐渐消失,它并没有走到边缘,波纹在中途被打断,您可以在弹出窗口消失时看到一个圆圈。
就好像解雇是在中途停止动画。任何人都知道为什么以及如何解决它?
我遇到了这个问题,花了 2 周的时间才解决它。是的 dismiss Popup Window 是罪魁祸首,action dismiss() stops/clears 所有未决的动画。
这是我在自定义弹出窗口中显示单击项目时的涟漪效果所做的工作Window:
// 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 微秒,这将允许在 dismiss() 被触发 Popup 之前发生连锁反应 Window。
您必须调整 onClick delay/duration 和 dismiss fade 动画持续时间以使其按预期工作。
我有一个 PopupWindow,它使用带有单个 Button
的自定义布局。
Button
已 android:background="?attr/selectableItemBackground"
设置为具有涟漪效应。如果没有 dismiss
调用,连锁反应效果很好。
当我在 OnClickListener
的弹出窗口上调用 dismiss
时,涟漪效果在关闭过程中被打断。您可以从波纹中看到圆圈,但随着 PopupWindow 逐渐消失,它并没有走到边缘,波纹在中途被打断,您可以在弹出窗口消失时看到一个圆圈。
就好像解雇是在中途停止动画。任何人都知道为什么以及如何解决它?
我遇到了这个问题,花了 2 周的时间才解决它。是的 dismiss Popup Window 是罪魁祸首,action dismiss() stops/clears 所有未决的动画。
这是我在自定义弹出窗口中显示单击项目时的涟漪效果所做的工作Window:
// 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 微秒,这将允许在 dismiss() 被触发 Popup 之前发生连锁反应 Window。
您必须调整 onClick delay/duration 和 dismiss fade 动画持续时间以使其按预期工作。