Android使用第三方控件实现侧滑删除

简单介绍下本次使用的第三方控件–SwipeRecyclerView。
https://github.com/yanzhenjie/SwipeRecyclerView

首先肯定是我们的依赖啦~

compile 'com.yanzhenjie:recyclerview-swipe:1.0.2'

然后就是控件可以实现的动画效果:

1.RecyclerView 左右两侧 侧滑菜单。
2.菜单横向排布、菜单竖向排布。
3.RecyclerView长按拖拽Item。
4.RecyclerView侧滑删除item。
5.指定RecyclerView的某一个Item不能滑动删除或长按拖拽。
6.某一个Item显示的不同的菜单(类似QQ)。
7.用SwipeMenuLayout在任何地方都可以实现你自己的侧滑菜单。
8.使用SwipeRecyclerView下拉刷新、自动加载更多。
9.可以和ViewPager嵌套使用(兼容滑动冲突)。

无图无真相,来几张演示图吧。
侧滑菜单      长按拖拽

动态加载     直接滑动删除

其他的动画效果可以去Github中下载APK查看。
好了,废话不多说,我们开干~

先介绍关键的实现吧:
启用SwipeReyclerView的长按Item拖拽功能和侧滑删除功能

recyclerView.setLongPressDragEnabled(true);// 开启长按拖拽
recyclerView.setItemViewSwipeEnabled(true);// 开启滑动删除。
recyclerView.setOnItemMoveListener(onItemMoveListener);// 监听拖拽和侧滑删除,更新UI和数据

添加Item侧滑菜单
侧滑菜单支持自动打开某个Item的菜单,并可以指定是左边还是右边的:

// 打开第一个Item的左侧菜单。
recyclerView.openLeftMenu(0);

// 打开第一个Item的右侧菜单。
recyclerView.openRightMenu(0);

重点来了,动画的具体实现记得按步骤来,还有就是Adapter要使用这个自定义的SwipeMenuAdapter,因为动画效果是封装在这个Adapter里面的。

第一步,引用自定义View:SwipeMenuReyclerView:

<com.yanzhenjie.recyclerview.swipe.SwipeMenuRecyclerView
    android:id="@+id/recycler_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_behavior="@string/appbar_scrolling_view_behavior" />

第二步,设置菜单创建器、菜单点击监听:

SwipeMenuRecyclerView swipeMenuRecyclerView = findViewById(R.id.recycler_view);
// 设置菜单创建器。
swipeMenuRecyclerView.setSwipeMenuCreator(swipeMenuCreator);
// 设置菜单Item点击监听。
swipeMenuRecyclerView.setSwipeMenuItemClickListener(menuItemClickListener);

第三步,菜单创建器创建菜单:

/**
 * 菜单创建器。在Item要创建菜单的时候调用。
 */
private SwipeMenuCreator swipeMenuCreator = new SwipeMenuCreator() {
    @Override
    public void onCreateMenu(SwipeMenu swipeLeftMenu, SwipeMenu swipeRightMenu, int viewType) {

        SwipeMenuItem addItem = new SwipeMenuItem(mContext)
            .setBackgroundDrawable(R.drawable.selector_green)// 点击的背景。
            .setImage(R.mipmap.ic_action_add) // 图标。
            .setWidth(size) // 宽度。
            .setHeight(size); // 高度。
        swipeLeftMenu.addMenuItem(addItem); // 添加一个按钮到左侧菜单。

        SwipeMenuItem deleteItem = new SwipeMenuItem(mContext)
            .setBackgroundDrawable(R.drawable.selector_red)
            .setImage(R.mipmap.ic_action_delete) // 图标。
            .setText("删除") // 文字。
            .setTextColor(Color.WHITE) // 文字颜色。
            .setTextSize(16) // 文字大小。
            .setWidth(size)
            .setHeight(size);
        swipeRightMenu.addMenuItem(deleteItem);// 添加一个按钮到右侧侧菜单。.

        // 上面的菜单哪边不要菜单就不要添加。
    }
};

第四步,继承SwipeMenuAdapter,和正常的Adapter一样使用:

public class MenuAdapter extends SwipeMenuAdapter<MenuAdapter.DefaultViewHolder> {

    @Override
    public int getItemCount() {
        return 0;
    }

    @Override
    public View onCreateContentView(ViewGroup parent, int viewType) {
        return null;
    }

    @Override
    public ViewHolder onCompatCreateViewHolder(View realContentView, int viewType) {
        return null;
    }

    @Override
    public void onBindViewHolder(MenuAdapter.DefaultViewHolder holder, int position) {
    }
}

这里吐槽一句,代码太多了…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值