ViewDragHelper应用之仿QQ侧滑删除控件

2024-02-24 10:32

本文主要是介绍ViewDragHelper应用之仿QQ侧滑删除控件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


概要

QQ消息列表侧滑删除在网上也有很多相关代码介绍,介绍的实现方式也各不一样,本文是将侧滑删除自定义为一个控件,这样使用就可以不仅仅限制在ListView中了。如果想理解本文逻辑首先得对ViewDragHelper有一定的了解,可以参考一下ViewDragHelper解析,在文章中对ViewDragHelper进行了简单的介绍并配有示例demo,通过本文也可以加深对ViewDragHelper理解。

本文最终效果图如下:

swipelayout

侧滑删除控件实现分析

有关自定义控件的学习笔记已经记录了四篇了,有兴趣可以查看以前的文章:

  • Android自定义控件学习笔记一
  • Android自定义控件学习笔记二
  • Android自定义控件学习笔记三
  • Android自定义控件学习笔记四

本文的自定义控件是要重写一个ViewGroup,在以前的笔记中还没有记录过关于自定义控件来布局一个ViewGroup,SwipeLayout通过继承FragmeLayout重写onLayout方法布局子View,事实上SwipeLayout布局重点就在于如何布局子View,而侧滑删除的操作重点在于ViewDragHelper的如何使用,通过上面的简单分析,重点就在这两个地方了。

onLayout布局子View

FrameLayout是帧布局,就是说布局的时候都是上下层级的关系,这种情况下就需要动态来布局了,侧滑操作初始时时看不到的,也就是说初始时放在内容布局的后面就可以了,同时我们可以侧滑的范围就是侧滑菜单的宽度。

SwipeLayout布局文件

 

 

SwipeLayout布局代码

 

 

侧滑操作ViewDragHelper的实现

ViewDragHelper解析我们已经分析过三步走,第一步在构造函数中已经做过了,接下来就是剩下的两步了,关键在于第三步。

接管touch事件

 

 

自定义Callback

 

 

拖拽伴随动画操作

 

 

拖拽状态以及事件回调

 

 

小结

在一个ListView列表中当我们侧滑出一个菜单后需要其余的已经打开的菜单全部关闭,这时候我们可以将所有的打开的SwipeLayout放入一个List中,每次打开后将该SwipeLayout是存入List中,当我们关闭后再把SwipeLayout从List中移除掉,详细的代码就不再贴出来了,可以下载示例源代码查看。

示例源代码下载

本文地址www.sunnyang.com/368.html

这篇关于ViewDragHelper应用之仿QQ侧滑删除控件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/741828

相关文章

线程池ThreadPoolExecutor应用过程

《线程池ThreadPoolExecutor应用过程》:本文主要介绍如何使用ThreadPoolExecutor创建线程池,包括其构造方法、常用方法、参数校验以及如何选择合适的拒绝策略,文章还讨论... 目录ThreadPoolExecutor构造说明及常用方法为什么强制要求使用ThreadPoolExec

mysql_mcp_server部署及应用实践案例

《mysql_mcp_server部署及应用实践案例》文章介绍了在CentOS7.5环境下部署MySQL_mcp_server的步骤,包括服务安装、配置和启动,还提供了一个基于Dify工作流的应用案例... 目录mysql_mcp_server部署及应用案例1. 服务安装1.1. 下载源码1.2. 创建独立

Python列表的创建与删除的操作指南

《Python列表的创建与删除的操作指南》列表(list)是Python中最常用、最灵活的内置数据结构之一,它支持动态扩容、混合类型、嵌套结构,几乎无处不在,但你真的会创建和删除列表吗,本文给大家介绍... 目录一、前言二、列表的创建方式1. 字面量语法(最常用)2. 使用list()构造器3. 列表推导式

MyBatis-Plus逻辑删除实现过程

《MyBatis-Plus逻辑删除实现过程》本文介绍了MyBatis-Plus如何实现逻辑删除功能,包括自动填充字段、配置与实现步骤、常见应用场景,并展示了如何使用remove方法进行逻辑删除,逻辑删... 目录1. 逻辑删除的必要性编程1.1 逻辑删除的定义1.2 逻辑删php除的优点1.3 适用场景2.

C#实现插入与删除Word文档目录的完整指南

《C#实现插入与删除Word文档目录的完整指南》在日常的办公自动化或文档处理场景中,Word文档的目录扮演着至关重要的角色,本文将深入探讨如何利用强大的第三方库Spire.Docfor.NET,在C#... 目录Spire.Doc for .NET 库:Word 文档处理利器自动化生成:C# 插入 Word

MySQL中的DELETE删除数据及注意事项

《MySQL中的DELETE删除数据及注意事项》MySQL的DELETE语句是数据库操作中不可或缺的一部分,通过合理使用索引、批量删除、避免全表删除、使用TRUNCATE、使用ORDERBY和LIMI... 目录1. 基本语法单表删除2. 高级用法使用子查询删除删除多表3. 性能优化策略使用索引批量删除避免

Nginx内置变量应用场景分析

《Nginx内置变量应用场景分析》Nginx内置变量速查表,涵盖请求URI、客户端信息、服务器信息、文件路径、响应与性能等类别,这篇文章给大家介绍Nginx内置变量应用场景分析,感兴趣的朋友跟随小编一... 目录1. Nginx 内置变量速查表2. 核心变量详解与应用场景3. 实际应用举例4. 注意事项Ng

使用Python实现在PDF中添加、导入、复制、移动与删除页面

《使用Python实现在PDF中添加、导入、复制、移动与删除页面》在日常办公和自动化任务中,我们经常需要对PDF文件进行页面级的编辑,使用Python,你可以轻松实现这些操作,而无需依赖AdobeAc... 目录1. 向 PDF 添加空白页2. 从另一个 PDF 导入页面3. 删除 PDF 中的页面4. 在

Java轻松实现在Excel中插入、提取或删除文本框

《Java轻松实现在Excel中插入、提取或删除文本框》在日常的Java开发中,我们经常需要与Excel文件打交道,当涉及到Excel中的文本框时,许多开发者可能会感到棘手,下面我们就来看看如何使用J... 目录Java操作Excel文本框的实战指南1. 插入Excel文本框2. 提取Excel文本框内容3

Java中的随机数生成案例从范围字符串到动态区间应用

《Java中的随机数生成案例从范围字符串到动态区间应用》本文介绍了在Java中生成随机数的多种方法,并通过两个案例解析如何根据业务需求生成特定范围的随机数,本文通过两个实际案例详细介绍如何在java中... 目录Java中的随机数生成:从范围字符串到动态区间应用引言目录1. Java中的随机数生成基础基本随