Android系列之自定义ListView实现左右滑删除

本文介绍如何在Android中通过自定义ListView类并重写相关方法,实现左右滑动时的删除功能,为应用增添交互体验。
摘要由CSDN通过智能技术生成

一、自己写一个类,继承ListView,然后重写一些相关的方法

public class SlideCutListView extends ListView{/** 
 * 当前滑动的ListView position 
 */  
private int slidePosition;  
    /** 
     * 手指按下X的坐标 
     */  
    private int downY;  
    /** 
     * 手指按下Y的坐标 
     */  
    private int downX;  
    /** 
     * 屏幕宽度 
     */  
    private int screenWidth;  
    /** 
     * ListView的item 
     */  
    private View itemView;  
    /** 
     * 滑动类 
     */  
    private Scroller scroller;  
    private static final int SNAP_VELOCITY = 600;  
    /** 
     * 速度追踪对象 
     */  
    private VelocityTracker velocityTracker;  
    /** 
     * 是否响应滑动,默认为不响应 
     */  
    private boolean isSlide = false;  
    /** 
     * 认为是用户滑动的最小距离 
     */  
    private int mTouchSlop;  
    /** 
     *  移除item后的回调接口 
     */  
    private RemoveListener mRemoveListener;  
    /** 
     * 用来指示item滑出屏幕的方向,向左或者向右,用一个枚举值来标记 
     */  
    private RemoveDirection removeDirection;  
  
    // 滑动删除方向的枚举值  
    public enum RemoveDirection {  
        RIGHT, LEFT;  
    }  
  
  
    public SlideCutListView(Context context) {  
        this(context, null);  
    }  
  
    public SlideCutListView(Context context, AttributeSet attrs) {  
        this(context, attrs, 0);  
    }  
  
    public SlideCutListView(Context context, AttributeSet attrs, int defStyle) {  
        super(context, attrs, defStyle);  
        screenWidth = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getWidth();  
        scroller = new Scroller(context);  
        mTouchSlop = ViewConfiguration.get(getContext()).getScaledTouchSlop();  
    }  
  
    /** 
     * 设置滑动删除的回调接口 
     * @param removeListener 
     */  
    public void setRemoveListener(RemoveListener removeListener) {  
        this.mRemoveListener = removeListener;  
    }  
  
    /** 
     * 分发事件,主要做的是判断点击的是那个item, 以及通过postDelayed来设置响应左右滑动事件 
     */  
    @Override  
    public boolean dispatchTouchEvent(MotionEvent event) {  
        switch (event.getAction()) {  
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值