android 中如何很好的解决setOnClickListener和setOnTouchListener冲突
android 中怎么很好的解决setOnClickListener和setOnTouchListener冲突在android应用中我做了一个悬浮框,
android 中怎么很好的解决setOnClickListener和setOnTouchListener冲突 在android应用中我做了一个悬浮框,布局界面就一个button,我怎么区分我是做了这个按钮的setOnClickListener还是setOnTouchListener事件,setOnTouchListener是使这个按钮移动,setOnClickListener是点击这个按钮触发的事件,但往往只有触发一个事情,怎样才能很好的解决这个问题,请教高手,贴几行代码?[解决办法] setOnTouchListener是监控从点下鼠标 (可能拖动鼠标)到放开鼠标(鼠标可以换成手指)的整个过程 ,他的回调函数是onTouchEvent(MotionEvent event),然后通过判断event.getAction()是MotionEvent.ACTION_UP还是ACTION_DOWN还是ACTION_MOVE分别作不同行为。 setOnClickListener的监控时间只监控到手指ACTION_DOWN时发生的行为[解决办法]
探讨 setOnTouchListener是监控从点下鼠标 (可能拖动鼠标)到放开鼠标(鼠标可以换成手指)的整个过程 ,他的回调函数是onTouchEvent(MotionEvent event),然后通过判断event.getAction()是MotionEvent.ACTION_UP还是ACTION_DOWN还是ACTION_MOVE分别作不同行为。 setOnClickListener……[解决办法] 可以不用setOnClickListener这个监听,将该监听的内容放在onTouchEvent的ACTION_DOWN来处理
[解决办法] 探讨 因为我既要处理按钮的点击事件,又要触发按钮的onTouchEvent事件的时间不触发onclick事件,真不知道该怎样很好的处理,看网上有些代码是加上一个判断标志,请教该如果处理[解决办法] 你的需求理解了。用不到信号量,也用不到onclick,只要用一个变量记录的ACTION_MOVE的x,y。来判断是否移动了就行。
case MotionEvent.ACTION_MOVE:
x = (int) event.getX();
y = (int) event.getY();
break;
case MotionEvent.ACTION_UP:
if(x...&&y..){移动的处理}else{点击的处理}
PS:x,y具体的判断值因你的布局而异。
因为有的时候手指按下的时候可能会有小小的移动,所以你判断的时候可以当X,Y足够小的情况下视为正常按下。