首页 > 其他分享 >仿今日头条的graidview拖动

仿今日头条的graidview拖动

时间:2022-12-16 21:08:05浏览次数:34  
标签:动画 频道 GridView 拖动 graidview position 对应 头条


下面先上这次实现功能的效果图:(注:这个效果图没有拖拽的时候移动动画,DEMO里面有,可以下载看看)

仿今日头条的graidview拖动_android



三、开发思路

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.  退出时候,将改变后的频道列表存入数据库。




四、流程图

下面是大体的流程图:

仿今日头条的graidview拖动_数据库_02


注:本DEMO中,加入了长按震动,所以在权限里面记得加上“

• <!-- 在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)




标签:动画,频道,GridView,拖动,graidview,position,对应,头条
From: https://blog.51cto.com/u_13657808/5948383

相关文章

  • 表格怎么做,鼠标可以拖动,可以滑动,增添表格属性怎么操作?
    表格居然还可以这么做!......
  • 提高头条账号权重的几种方法?怎么查询头条权重?
    很多小伙伴在做内容账号的时候常常这些疑惑,,不知道可以做什么领域的内容,不知道从什么方面下手,今天和大家分享下怎样提高头条账号权重?如何查询头条权重?怎样提高头条账号权重?1.......
  • 机器人跳跃问题(今日头条2019)
    机器人跳跃问题机器人正在玩一个古老的基于DOS的游戏。游戏中有\(N+1\)座建筑——从0到N编号,从左到右排列。编号为0的建筑高度为0个单位,编号为i的建筑高......
  • 图片的拖动
      <div   @mousedown="imgMove"   id="imgRef"   ref="imgRef"   class="full-heightfull-widthimg-style"   style="position:......
  • 【快应用】任意拖动图标实现案例
    ​ 问题背景:快应用页面开发阶段,ui布局时总是会遇到要在页面上实现一个可以任意拖动的导航栏,且在拖动时不能超出屏幕和导航栏不能在到边界时被压缩。一些开发者就会被困......
  • qt 窗口可拖动
    参考:https://blog.csdn.net/qq_45254369/article/details/125878621左键按住,拖动窗口头文件:#ifndefFRAME_H#defineFRAME_H#include<QFrame>namespaceUi{cla......
  • js 双指放大、拖动图片
    $(function(){vareleImg=document.querySelector('#image');varstore={scale:1};//缩放处理eleImg.addEventListener('touchstar......
  • 小程序可拖动按钮 movable-area
    如果全屏拖动的话,movable-area会覆盖下层元素,所以就把拖动条放到页面右侧,内部元素大于拖动区域就不会出现需要点击事件穿透问题,缺点是只能在边上并且只能上下或者左右拖动......
  • 程序窗口跑到屏幕外无法拖动回来怎么办?
    今天突然想起这个问题,之前遇到过,当时不了了之,准备写一下这个问题的解决方案小合集这个方法个人感觉真好用所以想要分享一下,https://zhidao.baidu.com/question/550911151......
  • colResizable表格列可拖动,表头不能固顶
    <styletype="text/css">#colRTab{width:100%;border-collapse:collapse;table-layout:fixed;}#colRTabtd{borde......