代码之家  ›  专栏  ›  技术社区  ›  Martin

如何在RecyclerView中仅设置选定项目的动画

  •  0
  • Martin  · 技术社区  · 4 年前

    我有 RecyclerView 我想制作一个动画 View 里面 回收机查看 仅适用于满足特定条件的物品。

    我在用 ObjectAnimator 为了这个。有时它工作得很好,但有时动画会应用于所有视图。我想有一些回收问题 Views ,但我不确定是什么原因造成的。

    例子:

    val halfHeightCropped = halfHeight - (stopIndicatorHeight/2) //half item height minus half timeline circle height
            val halfDistCurrToNext = timeDistCurrToNext/2
            if (alreadyTraveled > halfDistCurrToNext){
                animator = ObjectAnimator.ofFloat(indicator, "translationY",  halfHeightCropped.toFloat()).apply {
                    duration = 0
                    start()
                }
            }
    

    我是一个动画圆圈,在基于实时的时间线上垂直移动。这个圆圈是每个圆圈的一部分 回收机查看 item,在某些项目中,此项目固定在item的中心 查看 ,并且一些(当时为1个)正在垂直设置此圆的动画。

    上面的示例是从调用的函数的一部分 onBindViewHolder 如果项目满足条件,否则视图将重置为默认位置。(布局参数中心垂直于项目)。

    0 回复  |  直到 4 年前
        1
  •  0
  •   Bharat Vankar    4 年前

    当从recyclerView中选择项目时,将其选择到适配器中,如

    yourAdapter = new yourAdapter(new ArrayLis(),new ItemOnClick(){
        @Override
        public void onClick(int position){
            yourAdapter.selectItem(position)
        }
    });
    

    在bind()方法中执行animate 持有人 类。

    if(selectedItem = getAdapterPosition){
        //perform your animation for the selected item
    }
    

    你的适配器应该有selectedItem变量和setter方法。