Android应用中实现拖拽排序及添加阴影的方式

本文详细介绍了在Android应用中实现RecycleView拖拽排序和添加拖动阴影的具体步骤,包括重写ItemTouchHelper的getMovementFlags、onMove、onSwiped等方法,以及如何通过接口实现拖动开始和结束时的阴影效果。同时,文章讨论了在快速拖动时如何优化数据库操作,以平衡性能和时效性。
摘要由CSDN通过智能技术生成

--- by Anwei.shi


背景介绍:

Android 应用开发中避免不了对容器中的各个Item的进行拖拽排序等操作,比如锤子手机中著名的OneStep功能(拖拽),以及Android 系统中语言设置菜单的快速排序功能。前段时间由于项目需求,需要对悬浮球中的菜单项实现如上的快速拖动排序删除等功能。

具体实现:

1.拖拽排序

参看AndroidSetting语言设置项源码,主要为LocaleDragAndDropAdapter.java和LocaleRecyclerView.java。在这两个类中主要是利用了RecycleView的辅助类ItemTouchHelper.class进行相关的拖拽排序等功能。该类的Google官方描述:

This is a utility class to add swipe to dismiss and drag & drop support to RecyclerView. It works with a RecyclerView and a Callback class, which configures what type of interaction are enabledand also receives events when user performs these actions. Depending on which functionality you support, you should override { @link Callback#onMove(RecyclerView, ViewHolder, ViewHolder)} and / or{ @linkCallback#onSwiped(ViewHolder, int)}.

从以上可以看出实现拖拽必须重写onMove()和onSwiped()这两个方法。Android的布局方式为上下左右,该如何控制拖拽的方向呢?继续阅读Android源码,有getMovementFlags(RecyclerViewrecyclerView, RecyclerView.ViewHolder viewHolder)的抽象方法,其描述为

Should return a composite flag which defines the enabledmove directions in each state (idle, swiping, dragging).

大意是返回的是一个具有移动方向的值flag。根据以上内容,实现如下代码:

private ItemTouchHelper helper = new ItemTouchHelper(new ItemTouchHelper.Callback() {

        @Override

        public int getMovementFlags(RecyclerViewrecyclerView, RecyclerView.ViewHolder viewHolder) {

            //首先回调的方法返回int表示是否监听该方向

            int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;//拖拽

            int swipeFlags = ItemTouchHelper.LEFT|ItemTouchHelper.RIGHT;//侧滑删除

            return makeMovementFlags(dragFlags, swipeFlags);

        }

        @Override

        public boolean onMove(RecyclerView recyclerView

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值