在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