我正在尝试在ListViews中执行类似iOS7的删除行为。即单击 - 符号并将包含 - 符号的行设置为动画(翻译)到左侧,删除按钮将显示在该行中。然后,如果用户点击另一个 - 在另一行上签名,旧行将动画回原始位置,新点击的行将转换为左侧显示删除按钮。现在,在屏幕上显示的行上执行此操作没有问题,但向下或向上滚动列表,之前未动画的一些随机视图被转换为右侧(取消删除时的效果)。我知道这是因为视图回收。我已经尝试了很多次保存位置打开(删除按钮显示)行,设置标签打开/关闭,但没有成功,我仍然得到未触摸的行动画。我错过了代码所以如果我发布它就不会反映问题:(,所以请非常感谢任何帮助。
P.S:我正在使用view.animate().translateXBy([width of delete button])
,即propertyAnimator
。
答案 0 :(得分:1)
告诉列表视图不回收视图
view.setHasTransientState(true);
之后
view.setHasTransientState(false);
答案 1 :(得分:1)
有点晚了,但也许这可以帮助某些人,我实际上是在getView方法中这样做并且工作正常,这个示例是一次运行多个动画,但仍然很容易修改它一个简单的动画:
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();
}