setontouchlistener为什么会出现override performclick警告
由源码可以看出,只要是使用了view.setOnClickListener()方法设置监听器,就会自动触发view.performClick()。
需要注意的是,如果同时使用了view.setOnTouchListener()方法,则有可能存在拦截view.performClick()的响应事件,因为当view.OnTouchEvent()在event.getAction() == MotionEvent.ACTION_DOWN时返回false,
系统会认为view不需要处理Touch事件,则后续的Touch事件(move、up、click)就不会被传进来,所以也不会触发view.performClick(),而view.setOnTouchListener()相当于是重写了view.OnTouchEvent(),
所以在写view的TouchListener处理时,需要留意view是否存在点击事件监听,如果有,则在适当的位置使用view.performClick()触发点击事件。
Android onTouch方法调用了两次的问题
cop_province.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { //阻止手指离开时onTouch方法的继续执行 if(event.getAction() == MotionEvent.ACTION_UP){ return true; }
也就是说,onTouch还是执行两次,但第二次的弹窗操作被制止了,也就达到了效果。
看来,对于看似简单的Touch事件,Android的设计者们远比我们想得周到。
Android:30分钟弄明白Touch事件分发机制 good
view变化监听器ViewTreeObserver介绍
Android View的生命周期
setFocusable、setEnabled、setClickable区别
scrollState有三种状态,分别是开始滚动(SCROLL_STATE_FLING),正在滚动(SCROLL_STATE_TOUCH_SCROLL), 已经停止(SCROLL_STATE_IDLE)
《人类的演化》读书笔记
我的2016---悲喜交加的一年 good
listview常用的事件:点击,滑动
Android onTouchEvent和setOnTouchListener中onTouch的区别