Android onTouchEvent和setOnTouchlist set map区别ener中onTouch的区别

如何取消或者关闭setOnTouchListener事件【android开发吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:115,263贴子:
如何取消或者关闭setOnTouchListener事件收藏
android开发哪家好?选南昌达内,达内是国内全实战型培训学校!14年教学经验,业内大师手把手带您做项目,O元试学,签就业协议!!
背景我在做一个安卓画板,有两个类,一个PaintView extends View,一个 DrawMainActivity extends Activity,我在第一个类里面改写了onTouchEvent方法,并在第二个类里面写了一个内部类是CircleTouchListener,是单点击按钮之后就变为画圆监听事件,现在我想点击按钮变为画圆监听事件之后再返回画线,这个该怎么做?怎么调用第一个类里onTouchEvent方法?或者怎么取消CircleTouchListener的监听?
子控件的ontouchevent返回false事件就交给父控件了
我觉得可以把button搞成radiobutton怎么样
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或详谈OnTouchListener与OnGestureListener的区别-android100学习网
详谈OnTouchListener与OnGestureListener的区别
Android事件处理机制是基于Listener实现的,比如触摸屏相关的事件,是通过OnTouchListener实现的;而手势是通过OnGestureListener实现的,那么这两者有什么关联...
Android事件处理机制是基于Listener实现的,比如触摸屏相关的事件,是通过OnTouchListener实现的;而手势是通过OnGestureListener实现的,那么这两者有什么关联呢?
OnTouchListener
OnTouchListener接口中包含一个onTouch()方法,直接看一个例子:
public class MainActivity extends Activity implements OnTouchListener {
public void onCreate(Bundle outState) {
super.onCreate(outState);
setContentView(R.layout.main);
TextView tv = (TextView) findViewById(R.id.tv);
tv.setOnTouchListener(this);
public boolean onTouch(View v, MotionEvent event) {
Toast.makeText(this, "Touch Touch", Toast.LENGTH_SHORT).show();
我们可以通过MotionEvent的getAction()方法来获取Touch事件的类型,包括 ACTION_DOWN(按下触摸屏), ACTION_MOVE(按下触摸屏后移动受力点), ACTION_UP(松开触摸屏)和ACTION_CANCEL(不会由用户直接触发)。借助对于用户不同操作的判断,结合getRawX()、 getRawY()、getX()和getY()等方法来获取坐标后,我们可以实现诸如拖动某一个按钮,拖动滚动条等功能。
可以看到OnTouchListener只能监听到三种触摸事件,即按下,移动,松开,如果想要监听到双击、滑动、长按等复杂的手势操作,这个时候就必须得用到OnGestureListener了。
OnGestureListener
接着上面的例子,这次加入手势监听:
public class MainActivity extends Activity implements OnTouchListener, OnGestureListener {
private GestureDetector mGestureD
public void onCreate(Bundle outState) {
super.onCreate(outState);
setContentView(R.layout.main);
mGestureDetector = new GestureDetector(this);
TextView tv = (TextView) findViewById(R.id.tv);
tv.setOnTouchListener(this);
public boolean onTouch(View v, MotionEvent event) {
return mGestureDetector.onTouchEvent(event);
// 用户轻触触摸屏,由1个MotionEvent ACTION_DOWN触发
public boolean onDown(MotionEvent arg0) {
Log.i("MyGesture", "onDown");
Toast.makeText(this, "onDown", Toast.LENGTH_SHORT).show();
// 用户轻触触摸屏,尚未松开或拖动,由一个1个MotionEvent ACTION_DOWN触发, 注意和onDown()的区别,强调的是没有松开或者拖动的状态
public void onShowPress(MotionEvent e) {
Log.i("MyGesture", "onShowPress");
Toast.makeText(this, "onShowPress", Toast.LENGTH_SHORT).show();
// 用户(轻触触摸屏后)松开,由一个1个MotionEvent ACTION_UP触发
boolean onSingleTapUp(MotionEvent e) {
Log.i("MyGesture", "onSingleTapUp");
Toast.makeText(this, "onSingleTapUp", Toast.LENGTH_SHORT).show();
// 用户按下触摸屏、快速移动后松开,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE, 1个ACTION_UP触发
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
Log.i("MyGesture", "onFling");
Toast.makeText(this, "onFling", Toast.LENGTH_LONG).show();
// 用户按下触摸屏,并拖动,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE触发
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
Log.i("MyGesture", "onScroll");
Toast.makeText(this, "onScroll", Toast.LENGTH_LONG).show();
// 用户长按触摸屏,由多个MotionEvent ACTION_DOWN触发
void onLongPress(MotionEvent e) {
Log.i("MyGesture", "onLongPress");
Toast.makeText(this, "onLongPress", Toast.LENGTH_LONG).show();
以上这篇详谈OnTouchListener与OnGestureListener的区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。26947人阅读
android中onTouchEvent和setOnTouchListener中onTouch的区别可以有些人并不了解,其实要说明白这个问题先要说下android的事件传递机制。
首先看下以下的代码1,这段代码反应了View处理事件的过程:
public boolean dispatchTouchEvent(MotionEvent event) {
&&&&&&& if (mOnTouchListener != null && mOnTouchListener.onTouch(this, event)) {
&&&&&&&&&&&
&&&&&&& return onTouchEvent(event);
在代码1中有一点首先需要明确,那就是如果dispatchTouchEvent返回值为true则本次事件被系统消耗掉(就是被控件处理了), 然后一个新的事件会被传入,如果dispatchTouchEvent返回值为false,则不会有新的事件被传入。
好,明白了这一点再看那个代码1中if语句后面的条件mOnTouchListener != null && mOnTouchListener.onTouch(this, event),mOnTouchListener 对象其实不就是你写的监听器对象吗?比如下面代码2的这个匿名对象。
xxxView.setOnTouchListener(new OnTouchListener() {
&& &&& &&& &@Override
&& &&& &&& &public boolean onTouch(View v, MotionEvent event) {
&& &&& &&& &&& &
&& &&& &&& &}
&& &&& &});
好,我们再看下代码2中onTouch事件中的返回值,如果代码2 return true则代表什么呢?代表代码1中将不会执行 return onTouchEvent(event);语句,这也就是说这次系统事件会被消耗掉,将会再次执行dispatchTouchEvent这个方法。
如果代码2 return false则代表代码1会执行onTouchEvent(event);这个方法,本次事件是否会被消耗掉将取决于onTouchEvent的返回值。
做个小总结其实就是如果setOnTouchListener中的onTouch方法返回值是true则onTouchEvent方法将不会被执行;只有当setOnTouchListener中的onTouch方法返回值是false时onTouchEvent方法才被执行。
以上说的情况适用于View对象而不是ViewGroup对象,ViewGroup对象下次再分析。
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:71280次
排名:千里之外
原创:19篇
评论:15条
(1)(1)(1)(1)(1)(1)(1)(1)(2)(1)(1)(2)(4)(4)onTouchEvent和setOnTouchListener中,Android_编程_创设数码解答网
onTouchEvent和setOnTouchListener中,Android
编辑: 创设数码解答网 &&&来源:用户发布&&&发布时间:&&&查看次数:23
onTouchEvent和setOnTouchListener中,Android,郁闷了!
【探讨解答】
AndroidonTouchEvent和setOnTouchListener中onTou...
android中onTouchEvent和setOnTouchListener中onTouch的区别可以有些人并不了解,其实要说明白这个问题先要说下android的事件传递机制。 首先看下以下的代码1,这段代码反应了View处理事件的过程: 代码1: public boolean dispatchTouchEvent(M...
androidonTouchEvent和setOnTouchListener中onTou...
在dispatch过程中会先去check已经被set的OnTouchListener,如果在OnTouchListener的onTouch里头return true了,就会直接return true,不再走view本身的onTouchEvent。具体看代码: /** * Pass the touch screen motion event down to the target...
androidonTouchEvent和setOnTouchListener中onTou...
OnTouchEvent()方法是获取的对屏幕的各种操作,比如向左向右滑动,点击返回按钮等等。属于一个宏观的屏幕触摸监控。 OnTouchListener()方法 是获取某一个控件某一个View的点击监控。 两者很容易区分。 区别如下: 1、如果setOnTouchListener中的...
更多相关内容
本站内容来自网友发布,本站无法保证其部分内容的正确性,请用户一定仔细辨别。
[] &&[联系QQ:885&971&98] &
沪ICP备号&}

我要回帖

更多关于 list和set的区别 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信