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(); } }
相关文章推荐
- listview item飞入和删除动画效果
- 依次加载listview的每一个item实现动画的效果
- 当滑动ListView时,让当前最后可见的Item在滑进屏幕时有一个推进动画效果~
- Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果
- ListView 实现带有Filpper效果的左右滑动删除 Item
- Android 使用NineOldAndroids实现绚丽的ListView左右滑动删除Item效果
- Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果
- 模仿android4.0的 通知栏 listview 滑动删除 item ,有滑动动画
- Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果
- 赵雅智_AndroidUI_listview的item滑动删除效果
- [Windows Phone] 为Listbox添加、删除item注入动画效果,并伴随Layout迁移动画
- Android 使用NineOldAndroids实现绚丽的ListView左右滑动删除Item效果
- Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果
- Android 使用NineOldAndroids实现绚丽的ListView左右滑动删除Item效果
- AndroidUI_listview的item滑动删除效果
- 模仿android4.0的通知栏listview滑动删除item ,有滑动动画。
- Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果
- Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果
- Android 使用NineOldAndroids实现绚丽的ListView左右滑动删除Item效果
- 模仿android4.0的通知栏listview滑动删除item ,有滑动动画