前言:今天突然想起来了列表的滑动删除功能,一些下拉刷新的框架也会带这个侧滑删除的功能,比如一些listview的和recycleview的刷新框架都有这个功能,我今天写这个博客的目的是如何不依赖这些框架也是实现侧滑删除,如果自己已经使用的列表框架没有侧滑删除怎么给单独加入侧滑删除功能。
概括:我今天写的这个文章就是讲的是怎么单独给列表加入侧滑删除功能,不去为了侧滑删除而依赖一个列表框架,就是说如果需要的话可以简简单单的在自己的列表中加入这个侧滑删除的功能。主要实现就是自定义列表条目的容器view,来实现对手势的监听,从而通过手势的侧滑实现删除按钮的出现效果。
好了,下面开始正文吧。。。
首先给出自定义条目容器控件的代码:
里面的注释请好好看看,有助于你快速的看懂这个类的实现,并且实现你的自定义!!
public class DragListItem extends LinearLayout {
private Context mContext;
private View mHidenDragView;
private LinearLayout mContentView;//将包裹实际的内容
private LinearLayout mHidenLayout;
private Scroller mScroller;
private int mLastX, mLastY;
private int mDragOutWidth;//完全侧滑出来的距离
private double mfraction = 0.75;//触发自动侧滑的临界点
private boolean isDrag = false;
public DragListItem(Context context) {
super(context);
mContext = context;
initView();
}
public DragListItem(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
initView();
}
private void initView() {
setOrientation(HORIZONTAL);
//merge进来整个listItem,在这里可以自己定义删除按钮的显示的布局,随便按照的喜好修改都行
mHidenDragView = View.inflate(mContext, R.layout.hide_drag_item, this);
mContentView = (LinearLayout) mHidenDragView.findViewById(R.id.show_content_view);
mHidenLayout = (LinearLayout) mHidenDragView.findViewById(R.id.hide_view);
mScroller = new Scroller(mContext);
//将隐藏的删除布局的宽度赋值给边界的值,根据自己的需要可以任意的修改
mDragOutWidth = dip2px(mContext, 120);
}
public static int dip2px(Context context, float dpValue) {