android 模仿自带的notifacation提示左右滑动删除Listveiw的item项

先来个效果图吧:

可以左右拖动,并且在拖动过程中慢慢变透明....(没有在真机上测试)

                             

                            

下面是主要代码,些的很烂,改进的地方还有很多哦,放在这学习一下了.....

package com.xy.android.wireless.orderdishes.processdata;

import java.util.List;

import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.AnimationUtils;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.TranslateAnimation;
import android.widget.ListView;

import com.zte.android.wireless.orderdishes.adapter.util.DetailsListAdapter;
import com.zte.android.wireless.orderdishes.server.R;

/**
 * @version 创建时间:2012-11-20 下午3:43:09 类说明
 */
public class deleteListViewItem implements OnTouchListener {
	private List<DishInfo> list;// 传进来的list数据
	private DetailsListAdapter adapter;// 传进来的列表适配器

	public deleteListViewItem(List<DishInfo> list, DetailsListAdapter adapter) {
		this.list = list;
		this.adapter = adapter;
	}

	float x = 0, y = 0;
	int sum;
	int temp;
	boolean mFlag = false;
	float alpha = 1f;

	@Override
	public boolean onTouch(View view, MotionEvent event) {
		float upx = 0, upy = 0, movex = 0;
		int position = 0;
		if (event.getAction() == MotionEvent.ACTION_DOWN) {
			x = event.getX();
			y = event.getY();

		}
		position = ((ListView) view).pointToPosition((int) x, (int) y);
		if (event.getAction() == MotionEvent.ACTION_MOVE) {
			movex = event.getX();
			if (mFlag) {
				if (temp > movex) {
					((ListView) view).getChildAt(position).scrollBy((int) (3),
							0);
					alpha += 0.01f;
					((ListView) view).getChildAt(position).setAlpha(alpha);
					sum -= 3;
				}
			}
			if ((x - movex) < 0) {
				if (Math.abs(x - movex) > ((ListView) view)
						.getChildAt(position).getWidth() * 0.8) {
					View v = ((ListView) view).getChildAt(position);
					deleteListItem(v, position);
				}
				((ListView) view).getChildAt(position).scrollBy((int) (-3), 0);
				alpha -= 0.01f;
				((ListView) view).getChildAt(position).setAlpha(alpha);
				sum += 3;
				temp = (int) movex;
				mFlag = true;
			}
		}
		if (event.getAction() == MotionEvent.ACTION_UP) {
			upx = event.getX();
			upy = event.getY();
			int position1 = ((ListView) view).pointToPosition((int) x, (int) y);
			int position2 = ((ListView) view).pointToPosition((int) upx,
					(int) upy);
			if (position1 == position2 && Math.abs(x - upx) > 200) {
				if (x < upx) {
					View v = ((ListView) view).getChildAt(position);
					deleteListItem(v, position);
					alpha = 1f;
					((ListView) view).getChildAt(position).scrollBy((int) sum,
							0);
					((ListView) view).getChildAt(position).setAlpha(alpha);
				}
			} else {
				alpha = 1f;
				((ListView) view).getChildAt(position).setAlpha(alpha);
				((ListView) view).getChildAt(position).clearFocus();
				((ListView) view).getChildAt(position).scrollBy((int) sum, 0);
				sum = 0;
			}
			position = 0;
			sum = 0;
		}
		return false;
	}

	protected void deleteListItem(View rowView, final int positon) {
		Animation animation = (Animation) AnimationUtils.loadAnimation(
				rowView.getContext(), R.anim.item_anim);
		animation.setAnimationListener(new AnimationListener() {
			public void onAnimationStart(Animation animation) {
			}

			public void onAnimationRepeat(Animation animation) {
			}

			public void onAnimationEnd(Animation animation) {
				System.out.println("list.size--->>>" + list.size());
				list.remove(positon);
				adapter.notifyDataSetChanged();
				animation.cancel();
			}
		});
		rowView.startAnimation(animation);
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值