本文小编为大家详细介绍“Android事件冲突怎么解决悬浮窗拖拽问题”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android事件冲突怎么解决悬浮窗拖拽问题”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。最近项目中要做一个音乐播放悬浮按钮的功能,最终实现效果如下:悬浮窗布局文件就不放了,就是水平LinearLayout
里面放几个ImageView
。做的过程当中遇到一个问题,就是悬浮窗是可以任意拖拽的,悬浮窗里面的按钮是可以点击的,比如暂停,下一曲,关闭悬浮窗等。按常规思路,先给整个悬浮窗setOnTouchListener()
,然后再给你里面的按钮setOnClickListener()
,点击运行,结果发现,点击事件是可以响应,拖拽也没问题,但是当手指放在ImageView
上拖拽时,onTouchListener
事件无法响应。此时第一感觉就是setOnTouchListener()
和setOnClickListener()
冲突了,需要解决一下冲突。无奈自己对Android事件分发消费机制一直都是一知半解的,一般都是出了问题需要解决,第一时间先百度,没有解决方案就只能去研究Android事件分发消费机制了,但是研究完也都是懵懵懂懂的,今天就决定把这个难点彻底消化掉。主要研究了这篇文章Android事件分发消费机制,然后对照着写了个demo,一一去验证,加深了自己的理解,最后终于解决了我的问题。先说下解决思路,自定义LinearLayout
,当手指处于滑动时,直接拦截事件,交给自己的onTouchEvent
处理即可,核心代码如下:很简单,就是在onInterceptTouchEvent()
里面拦截move
事件即可,这里你也可以重写onTouchEvent()
,在里面实现拖拽功能,但是这样就固定死了,所以我选择在外面setOnTouchListener()
,需要拖拽功能时才去实现主要是这行代码ItemViewTouchListener.kt
文件内容这里有一点需要注意的是,重写了LinearLayout
的onInterceptTouchEvent()
后会导致setOnTouchListener()
里面的ACTION_DOWN
事件接收不到,所以不要在down事件里面写逻辑。然后onTouch
一定要返回true,表示要消费事件,否则当拖拽非ImageVie免费云主机域名w
区域时会拖不动。读到这里,这篇“Android事件冲突怎么解决悬浮窗拖拽问题”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注百云主机行业资讯频道。
相关推荐: element ui的el-input-number修改数值失效怎么解决
这篇文章主要介绍了elementui的el-input-number修改数值失效怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇elementui的el-input-number修改数值失效怎么解决文章都会有所收获,下面我们…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。