大家好,我正在尝试在我的 Android 待办事项列表应用程序中制作淡出动画。我有这个代码
public void removeToDo(){
myItems.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
ObjectAnimator anim = ObjectAnimator.ofFloat(view, View.ALPHA, 0);
anim.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
items.remove(position);
itemsAdapter.notifyDataSetChanged();
}
});
anim.start();
return true;
}
});
}
是的,它的淡出很漂亮,但问题是当我添加一个新项目时,它会重复使用已经淡出该项目的行,所以结果是我在添加新项目时会有一个新行,但上面没有文本。
http://i.stack.imgur.com/o6wPz.jpg
请帮助我只是一个新手:)
最佳答案
试试这个解决方案。 ObjectAnimator
不可靠,请使用 Animation
代替它。
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, final View view, final int position, long id) {
final Adapter adapter = (Adapter) parent.getAdapter();
Animation fadeOut = new AlphaAnimation(1, 0);
fadeOut.setInterpolator(new AccelerateInterpolator());
fadeOut.setDuration(500);
fadeOut.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
adapter.pointItems.remove(position);
adapter.notifyDataSetChanged();
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
view.startAnimation(fadeOut);
return true;
}
});
关于android - ListView 动画淡出然后添加新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29448982/