android编程中onTouchEvent和onTouch的分别是做什么用的???

为什么我使用OnTouchListener接口的时候会让我实现一个Ontouch方法。但是触摸屏方法却是OntouchEvent这个方法呢?? 还有Ontouc... 为什么我使用 OnTouchListener接口的时候会让我实现一个Ontouch方法。但是触摸屏方法却是OntouchEvent 这个方法呢?? 还有 Ontouch(View v ,Event e)这个View是系统自动传进来的吗?????????????????? 展开
 我来答
lyan2
2011-07-27
知道答主
回答量:28
采纳率:0%
帮助的人:20.4万
展开全部
一、onTouch
onTouch是View中OnTouchListener接口中的方法,处理View及其子类被touch是的事件处理。当然,前提是touch时间能够传递到指定的view。Q1:为什么会传递不到呢?
1:   /**
2: * Interface definition for a callback to be invoked when a touch event is
3: * dispatched to this view. The callback will be invoked before the touch
4: * event is given to the view.
5: */
6: public interface OnTouchListener {
7: /**
8: * Called when a touch event is dispatched to a view. This allows listeners to
9: * get a chance to respond before the target view.
10: *
11: * @param v The view the touch event has been dispatched to.
12: * @param event The MotionEvent object containing full information about
13: * the event.
14: * @return True if the listener has consumed the event, false otherwise.
15: */
16: boolean onTouch(View v, MotionEvent event);
17: }
二、onTouchEvent
onTouchEvent同样也是在view中定义的一个方法。处理传递到view 的手势事件。手势事件类型包括ACTION_DOWN,ACTION_MOVE,ACTION_UP,ACTION_CANCEL四种事件。
1: /**
2: * Implement this method to handle touch screen motion events.
3: *
4: * @param event The motion event.
5: * @return True if the event was handled, false otherwise.
6: */
7: public boolean onTouchEvent(MotionEvent event) {
8:  ……
9:  ……
10: }
一旦onTouchEvent方法被调用,并返回true则这个手势事件就结束了,并不会向下传递到子控件。Q2:onTouchEvent什么时候被调用呢?
三、onInterceptTouchEvent
onInterceptTouchEvent是在ViewGroup里面定义的。Android中的layout布局类一般都是继承此类的。onInterceptTouchEvent是用于拦截手势事件的,每个手势事件都会先调用onInterceptTouchEvent。
1: public boolean onInterceptTouchEvent(MotionEvent ev) {
2: return false;
3: }
此方法返回false,则手势事件会向子控件传递;返回true,则调用onTouchEvent方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
叉壹
2015-07-14 · 知道合伙人动漫行家
叉壹
知道合伙人动漫行家
采纳数:292 获赞数:882
今日头条、企鹅号、百家号专栏作者。

向TA提问 私信TA
展开全部
1.onTouch方法:
onTouch方法是View的 OnTouchListener借口中定义的方法。
当一个View绑定了OnTouchLister后,当有touch事件触发时,就会调用onTouch方法。
(当把手放到View上后,onTouch方法被一遍一遍地被调用)

2.onTouchEvent方法:
onTouchEvent方法是override 的Activity的方法。
重新了Activity的onTouchEvent方法后,当屏幕有touch事件时,此方法就会别调用。
(当把手放到Activity上时,onTouchEvent方法就会一遍一遍地被调用)

3.touch事件的传递:
在一个Activity里面放一个TextView的实例tv,并且这个tv的属性设定为 fill_parent
在这种情况下,当手放到屏幕上的时候,首先会是tv响应touch事件,执行onTouch方法。

如果onTouch返回值为true,
表示这个touch事件被onTouch方法处理完毕,不会把touch事件再传递给Activity,
也就是说onTouchEvent方法不会被调用。
(当把手放到屏幕上后,onTouch方法被一遍一遍地被调用)

如果onTouch的返回值是false,
表示这个touch事件没有被tv完全处理,onTouch返回以后,touch事件被传递给Activity,
onTouchEvent方法被调用。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式