仿今日头条的graidview拖动
三、开发思路
1. 获取数据库中频道的列表,如果为空,赋予默认列表,并存入数据库,之后通过对应的适配器赋给对应的GridView
2. 2个GridView--(1.DragGrid 2. OtherGridView)
DragGrid 用于显示我的频道,带有长按拖拽效果
OtherGridView用于显示更多频道,不带推拽效果
注:由于屏幕大小不一定,外层使用ScrollView,所以2者都要重写计算高度
3. 点击2个GridView的时候,根据点击的Item对应的position,获取position对应的view,进行创建一层移动的动画层
起始位置:点击的positiongetLocationInWindow()获取。终点位置:另一个GridView的最后个ITEM 的position + 1的位置。
并赋予移动动画,等动画结束后对2者对应的频道列表进行数据的remove和add操作。
4. 设置点击和拖动的限制条件,如 推荐 这个ITEM是不允许用户操作的。
5. 拖动的DragGrid的操作:
(1)长按获取长按的ITEM的position -- dragPosition 以及对应的view ,手指触摸屏幕的时候,调用onInterceptTouchEvent来获取MotionEvent.ACTION_DOWN事件,获取对应的数据。由于这里是继承了GridView,所以长按时间可以通过setOnItemLongClickListener监听来执行,或则你也可以通过计算点击时间来监听是否长按。
(2)通过onTouchEvent(MotionEvent ev)来监听手指的移动和抬起动作。当它移动到 其它的item下面,并且下方的item对应的position 不等于 dragPosition,进行数据交换,并且2者之间的所有item进行移动动画,动画结束后,数据更替刷新界面。
(3) 抬起手后,清除掉拖动时候创建的view,让GridView中的数据显示。
6. 退出时候,将改变后的频道列表存入数据库。
四、流程图
下面是大体的流程图:
[java] view plaincopy
![](https://code.csdn.net/assets/CODE_ico.png)
!-- 在SDCard中创建与删除文件权限 -- uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" / !-- 往SDCard写入数据权限 -- uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" / !-- 震动权限 -- uses-permission android:name="android.permission.VIBRATE"/
六、源码下载源码DEMO下载地址如下android 高仿 频道管理----网易、今日头条、腾讯视频 (可以拖动的GridView).rar.rar(1.71 MB, 下载次数: 163)
实现这个效果主要是采用的拼凑的方法,即先实现音符动画再实现图片旋转动画然后将两个效果合并到一起。
类似微信图片浏览,常见应用场景如微信朋友圈照片九宫格和微信聊天图片预览 本项目受Google官方demo Zooming a View 启发,实现了点击小图放大至全屏预览,退出全屏恢复至原来位置这两个过程的动画过渡。 常见应用场景如微信朋友圈照片九宫格和微信聊天图片预览,某些手机系统相册等viewpager图片查看 缩放 拖拽下拉缩小退出(效果同微信图片浏览) 特点1.支持自定义图片加载框架。
相关文章
- 头条AutoSize基本原理
- autosize px转dp_今日头条屏幕适配方案(AndroidAutoSize)「建议收藏」
- WordPress头条搜索时间因子改造代码
- 张勇、刘强东、马化腾接连“发飙”,痛批内部问题;头条抖音飞书开始优化,部分员工零赔偿;推特自马斯克接管以来首次大范围宕机|Q资讯
- “今日头条”名字是AB测试定的?字节跳动用九年时间打造出了怎样的数据平台
- 4.11|今天的开发者头条,都搁这了!
- 仿今日头条滑动评论效果详解手机开发
- 腾讯捐1亿元紧急驰援河南;抖音、今日头条开通河南暴雨互助通道;蓝色起源载人太空飞行成功;乐乐茶回应“被喜茶弃购”
- 一公司卖“今日头条鱼”被判赔字节跳动134万元
- 今日头条这样做金融,58和360或许都该学一学?
- 流量变金融,慢半拍的今日头条还能赶上吗?
- 仿网易新闻客户端头条ViewPager嵌套实例