当前位置: 首页 > 知识库问答 >
问题:

如果在项目视图中添加动画,则连续调用onBindViewHolder()

余善
2023-03-14

我有一个回收器视图,它为onBindViewHolder()中的每个项目添加了动画,这导致在回收器视图中对单个项目的多次调用。

我的要求是在“回收者”视图中选择物品时放大图像。我在onBindViewHolder()中为每个项目启动了一个动画,这导致对同一项目连续调用onBindViewHolder()。

@Override
public void onBindViewHolder(@NonNull BaseViewHolder viewHolder, int viewType) {
    viewHolder.imageView.animate().scaleX(scaleX).scaleY(scaleY).setListener(new Animator.AnimatorListener() {
        @Override
        public void onAnimationStart(Animator animation) {
        }

        @Override
        public void onAnimationEnd(Animator animation) {
            viewHolder.imageView.animate().setListener(null);
        }

        @Override
        public void onAnimationCancel(Animator animation) {

        }

        @Override
        public void onAnimationRepeat(Animator animation) {

        }
    }).setDuration(THUMBNAIL_ZOOMING_DURATION).start();
}

当通过动画选择项目时,Imageview应放大1.15f,如果取消选择,则应缩小。

共有1个答案

顾恺
2023-03-14

onBindViewHolder不是动画的好地方。尝试使用onViewattachedToWindow启动和onViewDetachedFromWindow停止动画

 类似资料:
  • 我正在创建一个简单的应用程序供个人使用,我被卡住了,因为我需要从我的滚动视图中添加/删除文本。在屏幕截图下面的蓝色方块是我的滚动视图和邮件按钮(占位符)需要打开一个弹出窗口,我可以把2个值在2个不同的框,一个字符串和一个双。 Main_Activity 我知道如何做几乎所有的事情,但我不知道如何添加一个文本,每次我点击邮件按钮,它应该像这样,当我点击它 这就是完成时应该做的。汽车模块的左按钮是“从

  • 如何在swapCursor函数中实现回收器视图默认项添加/删除动画。notifyDataSetChanged()不会显示任何动画。

  • 问题内容: 我有一个按钮,该按钮调用animateWithDuration代码,以淡出图像,淡入文本和in的新bg颜色,然后将其重置为正常值。动画需要几秒钟才能完成,效果很好。 然而! 有一个问题: 有时在动画结束之前会再次按下此按钮。发生这种情况时,我希望当前的动画停止并重新开始。 研究解决方案不起作用 根据我的阅读,解决方案应该很简单,只需导入QuartzCore并添加: 这确实删除了动画,但

  • 当前为 5.4 版本,稍后将升级到 5.5。在 5.5 中,本节内容被拆分成了多个小节。 使用动画视图 在 Unity 中,动画视图用于预览和编辑游戏对象的动画剪辑。动画视图可以通过菜单 Window -> Animation 打开。 查看游戏对象上的动画 动画视图和层级视图、场景视图以及检视视图紧密耦合。类似于检视视图,动画视图将显示当前选中对象的动画的时间轴和关键帧。你也可以在层级视图或场景视

  • 新手在这里。当长时间按下卡片(列表项)时,我很难在单个列表项上实现动画。当我长按一张卡片时,所有卡片都会动画化。有人可以解释为什么只有当回收器View的水平滚动被我禁用时才会发生此问题。 主要活动: 回收器视图适配器:

  • 你好。我需要帮助。我想用SharedPreferences在Listview中保存动态添加的项目。我正在添加带有公共void favekle函数的listview项目。我正在向数组列表添加条目