您的位置:首页 > 其它

listView Item 全部删除,item依次右边消失动画效果

2014-10-15 09:16 405 查看
代码实现比较简单,大家往下看。

public class ListViewAnimateDismiss2 {
private ListView labsList;
private CallBackDissmiss callback;
public ListViewAnimateDismiss2(ListView labsList,CallBackDissmiss callback) {
// TODO Auto-generated constructor stub
this.labsList= labsList;
this.callback=callback;
}

/**
* 获取listview所以item
*
* @return
*/
public List<View> getVisibleViewsForPositions() {
List<View> views = new ArrayList<View>();
for (int i = 0; i < labsList.getChildCount(); i++) {
View child = labsList.getChildAt(i);
views.add(child);
}
return views;
}

public void animateDismiss() {

if (labsList == null) {
throw new IllegalStateException(
"Call setAbsListView() on this AnimateDismissAdapter before calling setAdapter()!");
}

List<View> views = getVisibleViewsForPositions();

if (!views.isEmpty()) {
List<Animator> animators = new ArrayList<Animator>();
for (final View view : views) {
animators.add(createAnimatorForView(view));
}

AnimatorSet animatorSet = new AnimatorSet();

Animator[] animatorsArray = new Animator[animators.size()];
for (int i = 0; i < animatorsArray.length; i++) {
animatorsArray[i] = animators.get(i);
}

animatorSet.playTogether(animatorsArray);
animatorSet.addListener(new AnimatorListenerAdapter() {

@Override
public void onAnimationEnd(Animator animator) {
// invokeCallback(positionsCopy);
callback.dissmiassAll();
}
});
animatorSet.start();
} else {
// invokeCallback(positionsCopy);
callback.dissmiassAll();
}
}
//创建动画
public Animator createAnimatorForView(final View view) {
final ViewGroup.LayoutParams lp = view.getLayoutParams();
final int originalHeight = view.getHeight();

ValueAnimator animator = ValueAnimator.ofInt(originalHeight, 0); //从item高度到0
animator.addListener(new AnimatorListener() {

@Override
public void onAnimationStart(Animator animator) {
}

@Override
public void onAnimationRepeat(Animator animator) {
}

@Override
public void onAnimationEnd(Animator animator) {
lp.height = 0;
view.setLayoutParams(lp); //一定要恢复 高度,否则item就看不到了
}

@Override
public void onAnimationCancel(Animator animator) {
}
});

animator.addUpdateListener(new AnimatorUpdateListener() {

@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
lp.height = (Integer) valueAnimator.getAnimatedValue();
view.setLayoutParams(lp); //慢慢的将高度缩小直到消失
}
});

return animator;
}

public  interface CallBackDissmiss{
public void dissmiassAll();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: