首页 > 其他分享 >导航栏拖拽编辑实现

导航栏拖拽编辑实现

时间:2023-06-06 11:13:56浏览次数:40  
标签:效果 实现 编辑 intent 导航 拖拽 view

需要实现的效果
1、编辑库内拖拽到导航栏完成替换
2、导航栏内拖动完成替换

先看下实现后的效果图
image

思路分析

  1. 底部横栏是系统的导航栏,上面一部分数window 添加的一个view,由此可知,两者不属于同一个视图层级,从上面移动拖拽到导航栏替换参考上一篇 两个列表间实现拖拽编辑 来实现
  2. 导航栏内的拖拽,于recyclerView 自带api提供的拖拽交换 效果有不同,自带API 提供的是拖拽之后直接变换两个位置间的所有item 位置,与需求所需效果不一致,需要对原生实现逻辑进行大量的修改才能完成效果,最终采用 还是采用 View.startDragAndDrop 和 setOnDragListener来实现拖拽编辑效果

由于是在两个窗口层级的view 之间拖拽,所以在启动拖拽的时候有一点配置上面的变化

Intent intent = new Intent();
intent.putExtra(POS, position);
intent.putExtra(TYPE, item.getItemType());
ClipData data = ClipData.newIntent("", intent);
 View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(naviHolder.btn);
 // 添加参数
v.startDragAndDrop(data, shadowBuilder, v, DRAG_FLAG_GLOBAL);

同一个activity 或者同一个父布局下的使用 view.startDragAndDrop(data, shadowBuilder, view, 0)即可

剩下的效果都与 两个列表间实现拖拽编辑 逻辑类似,具体样式根据设计图做一点调整即可完成最终效果

标签:效果,实现,编辑,intent,导航,拖拽,view
From: https://www.cnblogs.com/qiyuexiaxun/p/17459966.html

相关文章

  • #聊一聊WuKong编辑器#
    对于文档编辑器这个平民工具,你或许有很多熟知的编辑器菜单或操作,但是WuKong编辑器绝对不是平凡之辈,它代表了另一种思维方式和编辑器风格,一款拥有“智慧”的编辑器。WuKong编辑器在保留传统文本编辑器的基础上,增加了很多新奇特别的功能,例如模板多样化、语法高亮显示、富文本编辑等,可......
  • Visual Studio Code mac好用的微软免费代码编辑器
    VisualStudioCode是微软官方的编码工具,被称为"代码编辑器",支持众多的编程语言,包括C、C++、Python等。但是它仅支持文本编辑功能,所以一般使用它来完成一些简单的编程。但VisualStudioCode的功能并不只限于文本编辑,它还提供了很多其他功能。VisualStudioCode易于使用,它易......
  • React学习时,自己拟定的一则小案例(table表格组件,含编辑)
    某次在Uniapp群看到有人问uniapp如何操作dom元素。他想对这张表标红的区域,做dom元素获取,因为产品想让红色色块点击时,成为可编辑,渲染1~4月份之间的行程安排。于是,有小伙伴说让他用position定位这里,点击时使红色色块层级抬高,弄个input上去。但提问的小伙伴并没有决定这么做,随后......
  • python+uiautomator2+atx,未开启底部导航栏会存在元素不一致
    如果在同一个安卓手机上,一个应用程序开启了底部导航栏而另一个未开启,在UI自动化测试中,这可能会导致元素在两个应用程序之间的定位方式有所不同。因为不同的应用程序可能会使用不同的布局和元素渲染方式。如果在未开启导航栏的应用程序中无法找到元素,则需要确保您的locator与该应......
  • PyInstaller 完美打包 Python 脚本,输出结构清晰、便于二次编辑的打包程序
    引入问题如果我要写一个Python项目,打包成exe运行(方便在没有Python的电脑上使用),我需要打包出的根目录结构美观,没有多余的、杂乱的依赖文件在那里碍眼,而且需要在发现bug时,我还需要能够修改里面的代码后,无需再次打包,就能正常运行,该怎么做呢?就以一个Hello项目为例,记一下我......
  • 直播平台搭建,编辑距离控制和调节
    直播平台搭建,编辑距离控制和调节 /** *@param{string}word1 *@param{string}word2 *@return{number} */varminDistance=function(word1,word2){ letdp=Array.from(Array(word1.length+1),()=>  Array(word2.length+1).fill(0) ); /*base......
  • ORM核心功能之导航属性- EFCore和 SqlSugar
    导航属性导航属性是作为ORM核心功能中的核心,在SqlSugar没有支持导航属性前,都说只是一个高级DbHelper,经过3年的SqlSugar重构已经拥有了一套非常成熟的导航属性体系,本文不是重点讲SqlSugar而是重点讲导航属性的作用,让更多写Sql人还未使用ORM的人了解到ORM的作用。 1.复杂的查......
  • Dropzone JS 使用指南(文件拖拽上传)
    JavaScript文件拖拽上传插件dropzone.js介绍[url]https://www.renfei.org/blog/dropzone-js-introduction.html[/url]DropzoneJS使用指南(文件拖拽上传)[url]http://www.open-open.com/lib/view/open1448610841329.html[/url]后台资料:基于SpringMVC的......
  • nas使用docker部署导航页Heimdall
    一、下载镜像linuxserver/heimdall:latest二、创建容器文件/文件夹:此处填写在nas上事先创建好的目录位置装载路径:/config类型选读写本地端口其实用自动的就行,不与已有端口冲突即可。启动容器,检查日志是否有报错项。如没有报错,容器应该为运行中的状态。三、打开Heimdall导航页点击快......
  • JQuery 导航插件和图表
    [b][color=red]导航代码例子集[/color][/b]:[url]http://www.skyuu.net/jscode/adsCode/caidandaohang/[/url]15个最新的jQuery导航菜单插件[url]http://www.bobd.cn/resources/others/50381.html[/url]这篇文章中,将向大家展示采用jQuery最新技术的导航菜单......