动画时禁用列表项

时间:2013-12-10 16:43:16

标签: android android-listview android-animation

因此,当我单击ListView中的列表项时,它会变为动画。问题是,当它动画时我仍然可以点击它,这是不可取的。我正在使用nineOldAndroids并禁用我所做的ListItem:

set.addListener(new Animator.AnimatorListener() {
                @Override
                public void onAnimationStart(Animator animator) {
                     v.setClickable(false);
                      v.setEnabled(false);
                }

                @Override
                public void onAnimationEnd(Animator animator) {
                    v.setClickable(true);
                    v.setEnabled(true);
                } 

                @Override
                public void onAnimationCancel(Animator animator) {

                }

                @Override
                public void onAnimationRepeat(Animator animator) {

                }
            });

setClickable表现得很奇怪:它让我在动画开始后的短暂时间点击列表项,动画结束后它不再让我点击它(即使我将它设置为true)。并且setEnabled根本不起作用。

如何在动画运行时禁用列表项?

1 个答案:

答案 0 :(得分:1)

使适配器isEnabled(int position)方法在该项目上的动画进行时返回false。

将此添加到您的适配器

Set<Integer> disabledItems;
private void setRowEnabled(int position,boolean enabled){
    if(enabled){
        disabledItems.remove(position);
    }else{
        disabledItems.add(position);
    }

}

@Override
public boolean isEnabled(int position) {

    return !disabledItems.contains(position);
}

从动画的onAnimationStart onAnimationEnd调用setRowEnabled