我有一个基于视图的布局(没有片段,只有一个活动)并在不同的状态之间设置动画。为了获得更好的平滑度,我使用了两个工具栏并交叉淡入。
问题是,如果我按下一个工具栏的导航按钮并启动crossfade动画,导航按钮不会恢复其未经处理的状态(可能是由于动画),从而导致选择器不消失…当我现在重新显示这个工具栏时,导航按钮看起来被按下了(波纹图仍然可见)。
我可以手动清除涟漪动画吗?
我试过什么
我得到的工具栏导航视图如下:Get Toolbar's navigation icon view referrence
我尝试清除视图的动画:toolbarNavigationView.clearAnimation()
我试着用ViewCompat.jumpDrawablesToCurrentState(toolbarNavigationView);重置可拉伸的
我试着将此发布到工具栏,以确保布局按如下方式分层:

toolbar.post(new Runnable()
{
    @Override
    public void run()
    {
        ViewCompat.jumpDrawablesToCurrentState(toolbarNavigationView);
    }
});

最佳答案

此hack用于清除带有android:background="?attr/selectableItemBackground"的视图的触摸动画(在API 24上测试,支持库26.0.0):

view.setVisibility(View.INVISIBLE);
view.setVisibility(View.VISIBLE);

10-04 16:53