java - Android PopupWindow dismiss 中途中断涟漪效应
问题描述
我有一个 PopupWindow,它使用带有单个Button
.
Button
已经android:background="?attr/selectableItemBackground"
开始产生连锁反应。如果没有dismiss
被调用,涟漪效应会很好地工作。
当我从 中调用dismiss
popupwindow 时OnClickListener
,涟漪效应在解散的中途被打断。您可以从波纹中看到圆圈,但随着 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 延迟/持续时间和关闭淡入淡出动画持续时间以使其按预期工作。
推荐阅读
- javascript - 如何使用不同的值多次加载相同的html
- android - 带有搜索 ime 选项的 AutoCompleteTextView
- eclipse - 在eclipse Photon(EE版本)中创建新项目时JSF配置不可用
- c++ - C++ - 使用 vcpkg 加速安装
- reactjs - 如何显示用户特定数据?
- python - 使用 python selenium 下载
- ios - 如何在 Swift 4 中的 WKWebView 中加载网页之前删除白屏?
- python - Django自动注销未在数据库中更新
- asterisk - 在接听电话前发送脉冲
- android - 如何通过 Android 中的 AccessibilityService 以编程方式禁用移动设备的最近按钮