android 悬浮框的OnTouch和OnClick事件同时存在

本文介绍如何在Android应用中让悬浮框的OnTouch和OnClickListener事件同时生效。当OnTouch事件返回true时,事件不会传递给OnClickListener。通过控制OnTouch事件的返回值,可以实现触摸移动和点击事件的协同工作。文中提供了一种利用全局变量isMove判断手指移动状态的方法,并给出了关键代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    在android应用中我做了一个悬浮框,布局界面就一个ImageView,setOnTouchListener是使这个图片移动,setOnClickListener是点击这个图片触发的事件,开始的时候我也没想多,发现只能触发一个事件。通过查资料,我了解了,当onTouch事件返回ture时将不会把事件传递到onClick事件(表面当前的事件已经处理,不需往下传递),因此我们需要控制好onTouch事件什么时候返回true或者false 来达到OnTouch和OnClick事件同时存在。

       现在我贴上关键代码进行分析下吧:

    

  isMove是全局变量,用来记录手指在手机屏幕上是否移动,false表示没,true表示滑动了,这个标记位很关键。

   

        接下来我们看OnTouchListener接口怎么实现的。

     

        

 

    前面我已经提到了需要控制好onTouch事件什么时候返回true或者false 来达到OnTouch和OnClick事件同时存在。因此当手指按下时我将isMove=false,此时手指没有

 在屏幕上移动,如果此时手指离开屏幕,那么直接返回isMove=false。当onTouch事件返回false时会把事件传递到onClick事件,此时点击事件是有效的。

    如果手指移动那么siMove=true,当onTouch事件返回ture时将不会把事件传递到onClick事件。此时只有imageview在屏幕在移动。

     还有个地方希望大家注意下,在用代码实现悬浮框时,设置window的属性:

     

     悬浮框的实现网上很多demo,我不细说了哈。

     然后我们只要将imageview绑定监听就好了。

     

       

        下面是我整个demo的代码实现的下载地址,供大家参考,如有问题大家提出来吧。

       http://download.youkuaiyun.com/detail/xiana2012/4889310

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值