listview删除动画 折叠效果
来源:互联网 发布:win7网络id灰色 编辑:程序博客网 时间:2024/05/17 10:27
参照别人的移除效果,然后集成到项目里,直接上效果吧;
效果就是这样,下面shuoxia实现思路
1.初始化数据源
private void initData() { for (int i = 0; i < 20; i++) { listData.add("数据:" + i); } }
2.适配器部分,重写getView方法:
@Override public View getView(final int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub final View view; ViewHolderDeFriend vh; if (convertView == null) { view = inflater.inflate(R.layout.item_black_listview, parent, false); setViewHolder(view); } else if (((ViewHolderDeFriend) convertView.getTag()).needInflate) { view = inflater.inflate(R.layout.item_black_listview, parent, false); setViewHolder(view); } else { view = convertView; } vh = (ViewHolderDeFriend) view.getTag(); if (flag) { vh.iv_delete.setVisibility(View.VISIBLE); } else { vh.iv_delete.setVisibility(View.GONE); vh.btn_delete.setVisibility(View.GONE); } vh.tv_user_name.setText(listData.get(position)); vh.iv_delete.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (callBack != null) { callBack.deleteItem(view,listData.get(position), position); } } }); return view; } public interface DeleteItemCallBack { void deleteItem(View view, String strName, int position); } public class ViewHolderDeFriend { public RoundOrCircleImageView user_icon_iv; public TextView tv_user_name; public TextView tv_user_time; public ImageView iv_delete; public Button btn_delete; public boolean needInflate; } private void setViewHolder(View view) { ViewHolderDeFriend viewHolder = new ViewHolderDeFriend(); viewHolder.btn_delete = (Button) view.findViewById(R.id.delete_btn); viewHolder.iv_delete = (ImageView) view.findViewById(R.id.delete_iv); viewHolder.user_icon_iv = (RoundOrCircleImageView) view.findViewById(R.id.black_user_icon); viewHolder.tv_user_name = (TextView) view.findViewById(R.id.black_user_name); viewHolder.tv_user_time = (TextView) view.findViewById(R.id.black_user_time); viewHolder.needInflate = false; view.setTag(viewHolder); }
3.在activity中回调删除的接口
adapter.setCallBack(new BlackListAdapter.DeleteItemCallBack() { @Override public void deleteItem(View view, String strName, int position) { deletePattern(view, strName, position); } });
4.设置一个AnimationListener监听,动画结束后舒心数据
private void deletePattern(final View view, final String name, final int position) { Animation.AnimationListener al = new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { listData.remove(position); BlackListAdapter.ViewHolderDeFriend vh = (BlackListAdapter.ViewHolderDeFriend) view.getTag(); vh.needInflate = true; adapter.notifyDataSetChanged(); ToastUtil.show("解除成功 " + name); } @Override public void onAnimationRepeat(Animation animation) { } }; collapse(view, al); }
5.自定义一个动画,自定义动画需要重写applyTransformation方法, 关于自定义动画的有参考:
http://blog.csdn.net/startfromweb/article/details/7644405
interpolatedTime会从0.0增大到1.0
只要开始了动画,且interpolatedTime只要没减到0则此方法会一直运行
这个就是实现逐渐位移往上的关键 private void collapse(final View view, Animation.AnimationListener al) { final int originHeight = view.getMeasuredHeight(); Animation animation = new Animation() { @Override protected void applyTransformation(float interpolatedTime, Transformation t) { if (interpolatedTime == 1.0f) { view.setVisibility(View.GONE); } else { view.getLayoutParams().height = originHeight - (int) (originHeight * interpolatedTime); view.requestLayout(); } } @Override public boolean willChangeBounds() { return true; } }; if (al != null) { animation.setAnimationListener(al); } animation.setDuration(300); view.startAnimation(animation); }
end~
阅读全文
0 0
- listview删除动画 折叠效果
- ListView中item删除动画效果
- ListView中item删除动画效果
- 删除listview中itme的动画效果
- TextView的折叠动画效果
- listView Item 全部删除,item依次右边消失动画效果
- NestedScrollView 嵌套 ListView 实现滑动折叠效果
- 折叠详情效果列表listview for android
- TextView的折叠展开(动画效果)
- TextView的折叠展开(动画效果)
- 补间动画实现折叠的效果
- TextView的折叠展开(动画效果)
- TextView的折叠展开(动画效果)
- listview select 动画效果
- ListView动画效果
- listView动画效果
- ListView 滑动删除效果
- ListView 一行行显示动画效果
- 富文本编辑器小案例
- 【安全牛学习笔记】恶意软件、防病毒软件、免杀技术、当前现状
- 全局替换字体,开源库更方便!!!
- make directory /Users/macbook/Library/Developer/Xcode/DerivedData/MapViewDemo: No such file or direc
- android:Android中pullToRefresh使用
- listview删除动画 折叠效果
- Increasing Triplet Subsequence问题及解法
- hdu 1564 Play a game(博弈——找规律)
- Matlab 键盘输入(input),打印(fprintf)
- angular项目环境搭建
- Retrofit2.0+RxAndroid2.0实现网络下载
- WSingle主题 – 支持多本的WordPress小说主题,美观大方,功能强大
- 微信小程序教学第二章:小程序中级实战教程之预备篇
- C++——【USACO 4.4.1】——Shuttle Puzzle