文件名称:DragGridLayout:可拖拽网格布局
文件大小:146KB
文件格式:ZIP
更新时间:2024-05-20 06:21:51
Java
效果 背景 在之前的项目中为了实现类似微信朋友圈的图片九宫格效果,手写了一个简单的网格控件,继承于 ViewGroup,后面因为准备做小组的技术分享,关于自定义控件的,所以就想把这个控件优化下,来作为这次分享的例子。自定义控件一般涉及测量、布局、绘制三大流程,再加上触摸事件的处理。之前的已完成的部分,已经包括了测量和布局,绘制暂时没有好想法,所以这次就想再加上触摸事件的处理。在使用微信发布朋友圈的时候,看到可以通过拖拽来重新排序图片,所以这次就加上可拖拽的功能。 思路 因为网格控件是位置是比较固定的,所以可以通过实时计算每个 Item 的位置,这里我们为了方便,所以缓存了每个 Item 的位置。当我们拖拽某个 Item 靠近新的位置时,如果新位置大于原来的位置,我们将原来位置到新位置的 Item 向后移动一位,反之,则向前移动一位。不知道这样解释是否清晰。 实现 首先我们要保存初始布局时的
【文件预览】:
DragGridLayout-master
----.gitignore(1017B)
----app()
--------.gitignore(7B)
--------build.gradle(908B)
--------src()
--------proguard-rules.pro(751B)
----settings.gradle(15B)
----build.gradle(546B)
----gradlew(5KB)
----README.md(18KB)
----gradlew.bat(2KB)
----gradle.properties(726B)
----gradle()
--------wrapper()