全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android DragVideo实现播放视频时任意拖拽的方法

Android DragVideo实现播放视频时任意拖拽

DragVideo

A Method to Drag the Video When Playing Video

一种在播放视频时,能够拖拽的方案

为什么有这个工程

经常在爱奇艺网站上看电影,看到如果滑动掩盖了播放窗口后,就后在最下面有一个小播放界面。并且这个播放界面,是可以任意拖拽的。感觉很酷

既然web端能实现,就想了想在移动端设备上,是否也能实现这个效果,于是就有了…

效果图:


——————>

实现思路:1、播放视频的view选择TextureView

2、ListView下方盖上自定义ViewDragHelper,当在播放视频时,通过自定义ViewDragHelper进行拖动TextureView

3、进行渐变处理,让两个view的文字能够交替显示

4、当TextureView到达右下方时,控制在水平方向上拖动,到达左边界时,如果再滑动,就销毁TextureView代码分析:

关于ViewDragHelper要注意如下几点:

1.ViewDragHelper.Callback是连接ViewDragHelper与view之间的桥梁(这个view一般是指拥子view的容器即parentView)。

2.ViewDragHelper的实例是通过静态工厂方法创建的;你能够指定拖动的方向;ViewDragHelper可以检测到是否触及到边缘;

3.ViewDragHelper并不是直接作用于要被拖动的View,而是使其控制的视图容器中的子View可以被拖动,如果要指定某个子view的行为,需要在Callback中想办法;

4.ViewDragHelper的本质其实是分析onInterceptTouchEvent和onTouchEvent的MotionEvent参数,然后根据分析的结果去改变一个容器中被拖动子View的位置( 通过offsetTopAndBottom(int offset)和offsetLeftAndRight(int offset)方法 ),他能在触摸的时候判断当前拖动的是哪个子View;

5.虽然ViewDragHelper的实例方法.ViewDragHelper create(ViewGroup forParent, Callback cb) 可以指定一个被ViewDragHelper处理拖动事件的对象,但ViewDragHelper类的设计决定了其适用于被包含在一个自定义ViewGroup之中,而不是对任意一个布局上的视图容器使用ViewDragHelper。

1.自定义的CustomViewDragHelper的初始化

ViewDragHelper一般用在一个自定义ViewGroup的内部,比如下面自定义了一个直接继承于ViewGroup的类DragvideoView,DragvideoView内部有一个mDragHelper作为成员变量:

创建一个带有回调接口的ViewDragHelper,这里是用MyHelperCallback,这些都是一些基本使用方法
拖动行为的处理已在注释中给出



当在MainActivity调用ViewDragHelper的setCallback方法时,以上回调就能作用了。当点击节目列表页(第一个显示listview的界面)的item时,调用playVideo()方法,方面内部通过DragVideoView.show方法,就开始显示DragVideoView。这时视频开始播放起来,并且,我们也可以对其进行拖拽了。

 

那么在拖动的过程中,我们要在DragVideoView中重写onTouchEvent方法,如下

以上方法最后,我们调用了,mDragHelper.processTouchEvent(event);也就是我们自定义的CustomViewDragHelper类,这个方法没有改动,就是ViewDragHelper的processTouchEvent方法。



 

总结下这个方法

在processTouchEvent中对ACTION_DOWN、ACTION_MOVE和ACTION_UP事件进行了处理:

1.在ACTION_DOWN中调用回调接口中的tryCaptureView方法,看当前touch的view是否允许拖动

2.在ACTION_MOVE中,view的坐标发生改变,调用回调接口中的onViewPositionChanged方法,根据坐标信息对view进行layout,通过ViewHelper这个类中的setScaleX、setScaleY方法,实现在拖动的过程中view在XY坐标上进行相应比例的缩放;

3.在ACTION_UP后调用回调接口中的onViewReleased方法,此方法中一个重要的任务是在ACTION_UP事件后,实现view的自动滑动,这里主要是使用了ViewDragHelper中smoothSlideViewTo方法

接着到达forceSettleCapturedViewAt方法

上面start了ViewDragHelper中的mScroller,在滑动过程中,通过重写computeScroll方法,可用用ViewCompat.postInvalidateOnAnimation(this)方法重绘view

最后由于拖拽过程中的显示视频的TextureView会不断变化,通过设置TextureView.SurfaceTextureListener,来监听当前TextureView的变化过程。


项目下载地址:http://xiazai./201612/yuanma/DragVideo-master().rar

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Android  # DragVideo  # DragVideo视频任意拖拽实现代码  # DragVideo实现播放视频时任意拖拽实现方案  # android使用surfaceview+MediaPlayer播放视频  # Android ViewPager中显示图片与播放视频的填坑记录  # Android中使用TextureView播放视频  # Android编程实现播放视频时切换全屏并隐藏状态栏的方法  # Android仿搜狐视频、微视等列表播放视频功能  # Android编程实现播放视频的方法示例  # Android多媒体教程之播放视频的四种方法  # Android 播放视频常见问题小结  # Android仿新浪微博/QQ空间滑动自动播放视频功能  # android surfaceView实现播放视频功能  # 拖动  # 自定义  # 回调  # 拖拽  # 过程中  # 重写  # 标上  # 有一个  # 的是  # 是在  # 第一个  # 就能  # 下载地址  # 是指  # 也能  # 适用于  # 要在  # 也可  # 能在  # 要注意 


相关文章: 动图在线制作网站有哪些,滑动动图图集怎么做?  网站制作的步骤包括,正确网址格式怎么写?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  javascript中的try catch异常捕获机制用法分析  如何选择网络建站服务器?高效建站必看指南  建站之星如何一键生成手机站?  建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  上海网站制作开发公司,上海买房比较好的网站有哪些?  建站之星代理费用多少?最新价格详情介绍  建站主机如何安装配置?新手必看操作指南  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何在企业微信快速生成手机电脑官网?  如何快速搭建高效简练网站?  如何通过宝塔面板实现本地网站访问?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  C++时间戳转换成日期时间的步骤和示例代码  建站之星代理如何获取技术支持?  网站制作费用多少钱,一个网站的运营,需要哪些费用?  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  如何用VPS主机快速搭建个人网站?  建站之星×万网:智能建站系统+自助建站平台一键生成  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  c# await 一个已经完成的Task会发生什么  如何快速查询网址的建站时间与历史轨迹?  音乐网站服务器如何优化API响应速度?  制作网站的公司有哪些,做一个公司网站要多少钱?  建站主机选购指南与交易推荐:核心配置解析  高端网站建设与定制开发一站式解决方案 中企动力  制作网站外包平台,自动化接单网站有哪些?  上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?  建站ABC备案流程中有哪些关键注意事项?  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  如何通过建站之星自助学习解决操作问题?  b2c电商网站制作流程,b2c水平综合的电商平台?  如何在云服务器上快速搭建个人网站?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  如何在服务器上三步完成建站并提升流量?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  山东云建站价格为何差异显著?  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  如何用AWS免费套餐快速搭建高效网站?  建站之星后台密码遗忘?如何快速找回?  网站制作公司排行榜,抖音怎样做个人官方网站  海南网站制作公司有哪些,海口网是哪家的?  公司网站的制作公司,企业网站制作基本流程有哪些?  建站之星多图banner生成与模板自定义指南  黑客入侵网站服务器的常见手法有哪些?  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  建站之星导航如何优化提升用户体验? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。