Android 重置视图的按下状态

Android 重置视图的按下状态,android,animation,view,ripple,Android,Animation,View,Ripple,我有一个基于视图的布局(没有片段,只有一个活动),并在不同的状态之间设置动画。为了获得更好的平滑度,我使用了两个工具栏并对它们进行交叉淡入淡出 问题是,如果我按下一个工具栏的导航按钮并启动crossfade动画,导航按钮不会恢复其未按下状态(可能是由于动画),导致选择器不会消失。。。当我现在重新显示此工具栏时,导航按钮看起来被按下(ripple drawable仍然可见) 我可以手动清除ripple动画吗 我尝试的 我得到如下工具栏导航视图: 我尝试清除视图的动画:toolbarNavigati

我有一个基于视图的布局(没有片段,只有一个活动),并在不同的状态之间设置动画。为了获得更好的平滑度,我使用了两个工具栏并对它们进行交叉淡入淡出

问题是,如果我按下一个工具栏的导航按钮并启动crossfade动画,导航按钮不会恢复其未按下状态(可能是由于动画),导致选择器不会消失。。。当我现在重新显示此工具栏时,导航按钮看起来被按下(ripple drawable仍然可见)

我可以手动清除ripple动画吗

我尝试的

我得到如下工具栏导航视图:

  • 我尝试清除视图的动画:
    toolbarNavigationView.clearAnimation()
  • 我尝试用
    ViewCompat.jumpDrawablesToCurrentState(toolbarNavigationView)重置可绘图文件
  • 我尝试将其发布到工具栏,以确保布局如下所示:

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

  • 尝试获取动画并将其重置,如下所示:

    Animation anim = yourView.getAnimation();
                if (anim != null) {
                    yourView.reset();
                }
                yourView.clearAnimation();
    

    此黑客使用android:background=“?attr/selectableItemBackground”
    清除视图的触摸动画(在API 24上测试,支持库26.0.0):

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