【问题标题】:Reset a views pressed state重置视图按下状态
【发布时间】:2016-04-11 10:11:08
【问题描述】:

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

问题是,如果我按下一个工具栏的导航按钮并启动交叉淡入淡出动画,导航按钮不会恢复它的未按下状态(可能是由于动画),导致选择器没有消失......当我现在重新显示这个工具栏,导航按钮看起来被按下(波纹绘制仍然可见)。

我可以手动清除波纹动画吗?

我尝试了什么

我得到如下工具栏导航视图:Get Toolbar's navigation icon view referrence

  1. 我尝试清除视图的动画:toolbarNavigationView.clearAnimation()
  2. 我尝试使用ViewCompat.jumpDrawablesToCurrentState(toolbarNavigationView); 重置drawable
  3. 我尝试将其发布到工具栏以确保布局布局如下:

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

【问题讨论】:

    标签: android animation view ripple


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      尝试获取动画并重置它,如下所示:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-12
        • 1970-01-01
        相关资源
        最近更新 更多