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

相关文章

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

Mysql实现范围分区表(新增、删除、重组、查看)

《Mysql实现范围分区表(新增、删除、重组、查看)》MySQL分区表的四种类型(范围、哈希、列表、键值),主要介绍了范围分区的创建、查询、添加、删除及重组织操作,具有一定的参考价值,感兴趣的可以了解... 目录一、mysql分区表分类二、范围分区(Range Partitioning1、新建分区表:2、分

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

python删除xml中的w:ascii属性的步骤

《python删除xml中的w:ascii属性的步骤》使用xml.etree.ElementTree删除WordXML中w:ascii属性,需注册命名空间并定位rFonts元素,通过del操作删除属... 可以使用python的XML.etree.ElementTree模块通过以下步骤删除XML中的w:as