android - 重置 View 按下状态

标签 android animation view ripple

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

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

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

我尝试过的

我得到如下所示的工具栏导航 View :Get Toolbar's navigation icon view referrence

  1. 我尝试清除 View 的动画:toolbarNavigationView.clearAnimation()
  2. 我尝试使用 ViewCompat.jumpDrawablesToCurrentState(toolbarNavigationView); 重置可绘制对象
  3. 我尝试将其发布到工具栏以确保布局如下所示:

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

最佳答案

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

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

关于android - 重置 View 按下状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36545750/

相关文章:

java - Butterknife 在我的 Android 应用程序中根本不起作用

android - Gradle同步失败:脱机模式下没有com.android.tools.build:gradle:6.2.2的缓存版本

android - Android wifi列表控件

animation - flutter 如何在同一页面上的小部件之间制作类似 Hero 的动画

javascript - 页面加载时延迟jQuery效果

基于 Django 类的 View 复合

php - 为角色目的在每个 http 请求上使用现有表名创建 mysql View

android - Camera save()和restore()方法的作用是什么?

android - 如何从 BLE 设备读取特征值的 Arraybuffer 中获取值

swift - 如何动画移除使用 ForEach 循环创建的 View 从 SwiftUI 中的 ObservableObject 获取其数据