Ant*_*hyn 9 animation android android-5.0-lollipop
我正在观察Android中按钮上的涟漪动画错误.基本上,我有一个ViewGroup,称它为ButtonContainer,包含2个按钮,称之为OkButton和CancelButton.当用户点击CancelButton时,我想通过将其可见性设置为GONE来隐藏ButtonContainer.但这会导致副作用,即CancelButton上的波纹动画排队,但从未播放,并且下次ButtonContainer变为可见时播放.这似乎发生是因为按钮的OnClickListener在波纹动画有机会播放之前被触发.本文描述了这个确切的错误,并显示了视图的确切行为:链接
笔者提出一个解决办法,但我想知道,有没有办法有OnClickListener被解雇后上的按钮波纹动画的播放?
简短的回答:不是真的,根据材料指南(AFAIK),你不应该以这种方式延迟onClick执行.在我看来,这将导致非常糟糕的用户体验 - 我喜欢我的按钮活泼,我不喜欢等待花哨的动画.
中等长度的半答案:您可以快速破解并在.postDelayed(...)调用中将 onClick逻辑的内容包装得足够好.如果有适当的延迟,动作将在波纹之后发生.这是一个黑客,它是脆弱的,我会建议你反对这个解决方案.
答案很长:你可以确定Ripple是否完成了动画,尽管这条路有点复杂.Ripple是一个Drawable,并且作为所有动画Drawables,它通过回调告诉它View什么时候做动画(以及何时完成它).您可以使用此回调来判断动画何时实际结束.
例如,您可以为此实现自己的回调,将所有调用转发到Ripple的托管ViewGroup,并告诉您动画何时完成,以便您可以开展业务.
作为底线,我认为你应该:
| 归档时间: |
|
| 查看次数: |
2940 次 |
| 最近记录: |