2013-09-25 114 views
1

我想在ListViews中做类似iOS7的删除行为。即点击一个 - 符号并将包含 - 符号的行动画(转换)到左边的删除按钮将显示的行。然后,如果用户点击另一行 - 在另一行上登录,则旧行将回到其原始位置,新点击的行将转化为左侧,显示删除按钮。现在,在屏幕上显示的行上执行此操作,但向下滚动列表或向上滚动列表,以及在向右移动之前不会生成动画的随机视图(取消删除时的效果)没有任何问题。我知道这是因为视图回收。我已经尝试了很多次,打开了保存位置(显示删除按钮)行,将标签设置为打开/关闭,但没有成功,我仍然没有触及到动画的行。我曾与代码你错过,所以如果我发布它,它不会反映问题:(,所以请我真的很感激任何帮助Android的Listview回收利用动画行

PS:我使用view.animate().translateXBy([width of delete button])propertyAnimator

回答

1

前。动画开始告诉列表视图不回收的观点

view.setHasTransientState(true); 

view.setHasTransientState(false); 
+0

这需要API等级16 ,截至2014年第一季度,我认为这是IMO的过早 – CQM

1

有点晚,但也许这可以帮助索姆ebody,我实际上做这在getView方法和工作正常,这个样本是一次运行多个anims,但仍容易修改它的一个简单的动画:

private void translationY(View convertView) { 
    ObjectAnimator anim1 = ObjectAnimator.ofFloat(convertView, View.TRANSLATION_Y, 400f, 0f); 
    anim1.setDuration(TRANSLATION_Y_DURATION); 

    ObjectAnimator anim2 = ObjectAnimator.ofFloat(convertView, View.ALPHA, 0f, 1f); 
    anim2.setDuration(FADE_IN_DURATION); 

    startAnimation(anim1, anim2); 
} 

private void startAnimation(Animator... items){ 
    AnimatorSet set = new AnimatorSet(); 
    set.playTogether(items); 
    set.start(); 
}