您的位置:网站首页 > 行业资讯 > 行业动态 > 正文

94999com官网》》》》》》

  2016-01-19 01:07  中国润滑油信息网
94999com官网》》》》》》

activity_touchtrain.xml

650) this.width=650;" src="%5C" title="\"QQ截图2613.png\"" alt="\"wKioL1Yp00zxDMxQAAEKgDwoRMw917.jpg\"/" />

TouchView(自界说View类)

@Override

public boolean dispatchTouchEvent(MotionEvent event) {

Log.e(TAG, "dispatchTouchEvent分发工作"+ TouchEventUtil.getTouchAction(event.getAction()));

return super.dispatchTouchEvent(event);

}

@Override

public boolean onTouchEvent(MotionEvent ev) {

Log.e(TAG, "onTouchEvent处置惩罚工作"+ TouchEventUtil.getTouchAction(ev.getAction()));

return super.onTouchEvent(ev);

}

TouchViewGroup(自界说ViewGroup类)

@Override

public boolean dispatchTouchEvent(MotionEvent ev) {

Log.e(TAG, "dispatchTouchEvent分发工作" + TouchEventUtil.getTouchAction(ev.getAction()));

return super.dispatchTouchEvent(ev);

}

@Override

public boolean onInterceptTouchEvent(MotionEvent ev) {

Log.e(TAG, "onInterceptTouchEvent阻挠工作"+ TouchEventUtil.getTouchAction(ev.getAction()));

return super.onInterceptTouchEvent(ev);

}

@Override

public boolean onTouchEvent(MotionEvent ev) {

Log.e(TAG, "onTouchEvent处置惩罚工作"+ TouchEventUtil.getTouchAction(ev.getAction()));

return super.onTouchEvent(ev);

}

TouchTraining(Activity)

@Override

public boolean dispatchTouchEvent(MotionEvent ev) {

Log.e(TAG, "dispatchTouchEvent分发工作"+ TouchEventUtil.getTouchAction(ev.getAction()));

return super.dispatchTouchEvent(ev);

}

@Override

public boolean onTouchEvent(MotionEvent ev) {

Log.e(TAG, "onTouchEvent处置惩罚工作"+ TouchEventUtil.getTouchAction(ev.getAction()));

return super.onTouchEvent(ev);

}

TouchEventUtils(器械类,获取当前工作类型)

public static String getTouchAction(int actionId) {

String actionName = "Unknow:id=" + actionId;

switch (actionId) {

case MotionEvent.ACTION_DOWN:

actionName = "ACTION_DOWN";

break;

case MotionEvent.ACTION_MOVE:

actionName = "ACTION_MOVE";

break;

case MotionEvent.ACTION_UP:

actionName = "ACTION_UP";

break;

case MotionEvent.ACTION_CANCEL:

actionName = "ACTION_CANCEL";

break;

case MotionEvent.ACTION_OUTSIDE:

actionName = "ACTION_OUTSIDE";

break;

}

return actionName;

}

事例剖析

计划1

前提

控件名称

dispatchTouchEvent回来值

onInterceptTouchEvent 回来值

onTouchEvent 回来值

TouchTraining

super.dispatchTouchEvent(ev)

----

super.onTouchEvent(ev)

TouchViewGroup

false

super.onInterceptTouchEvent(ev)

super.onTouchEvent(ev)

94999com官网》》》》》》

TouchView

super.dispatchTouchEvent(ev)

----

super.onTouchEvent(ev)

运转成果:

com.training.cj.mytraining E/TouchTraining: dispatchTouchEvent分发工作ACTION_DOWN

com.training.cj.mytraining E/TouchViewGroup: dispatchTouchEvent分发工作ACTION_DOWN

com.training.cj.mytraining E/TouchTraining: onTouchEvent处置惩罚工作ACTION_DOWN

com.training.cj.mytraining E/TouchTraining: dispatchTouchEvent分发工作ACTION_UP

com.training.cj.mytraining E/TouchTraining: onTouchEvent处置惩罚工作ACTION_UP

成果剖析:Touch工作起头,调用TouchTraining的dispatchTouchEvent把工作分发TouchViewGroup

的dispatchTouchEvent,TouchViewGroup的dispatchTouchEvent回来false,工作中止向下通报,同

时势情并没有花费,但由于该工作来自TouchTraining(Activity),以是毕竟回来给TouchTraining

的onTouchEvent进行花费

Android工作流程详解

收集上有不少博客论述了android的工作分发机制和处置惩罚流程机制,可是看过千遍,总仍是感觉有些迷迷糊糊,因而分外抽出一天工作来亲测下,向像我相同的广阔入门法度榜样员具体论述android工作后头的故事,话不多说,上干货

android整个工作流程重要牵涉到dispatchTouchEvent(),onInterceptTouchEvent(),

onTouchEvent()这三个法子,下表来说明这三个法子的功能和漫衍场景:

表1:

法子名称

功解说明

Activity

ViewGroup

View

dispatchTouchEvent()

工作分发

YES

YES

YES

onInterceptTouchEvent()

工作阻挠

NO

YES

NO

o优游娱乐登录州nTouchEvent()

工作处置惩罚

YES

YES

YES

先来剖析下Touch工作:统统Touch工作发生发火时会调用当前Activity的dispatchTouchEvent()方

法来分发工作,Activity的dispatchTouchEvent()法子毕竟会调用PhoneWindow类中的

superDispatchTouchEvent法子,毕竟逻辑等于该activity会调用ViewGroup类中的

dispatchTouchEvent()进行隧道式分发工作(按筹划元素由外向内分发),如本事例中的分发流程

为TouchTraining->TouchViewGroup -> TouchView,需求把稳的是,当你在Activit中的

dispatchTouchEvent()中直接回来具体的布尔值(无论是true仍是false),Touch工作直接会被

花费在该法子中,不会再进行下来的工作分发流程,因而必须在activity的dispatchTouchEvrent

回来super.dispatchTouchEvent()来进行工作分发流程下面进行事例说明剖析:

首先在界说自个的View和ViewGroup,重写表1它们各自支撑的工作流程法子,我这儿自定ViewGroup

一连的是LinearLayout(只需一连的是ViewGroup都相同),然后分手在Activity的筹划文件中参加自定

义的控件,接着在Activity中也重写它支撑的工作流程法子

计划2

前提

控件名称

dispatchTouchEvent回来值

onInterceptTouchEvent 回来值

onTouchEvent 回来值

TouchTraining

super.dispatchTouchEvent(ev)

----

super.onTouchEvent(ev)

TouchViewGroup

true

super.onInterceptTouchEvent(ev)

super.onTouchEvent(ev)

TouchView

super.dispatchTouchEvent(ev)

----

super.onTouchEvent(ev)

运转成果:

com.training.cj.mytraining E/TouchTraining: dispatchTouchEvent分发工作ACTION_DOWN

com.training.cj.mytraining E/TouchViewGroup: dispatchTouchEvent分发工作ACTION_DOWN

com.training.cj.mytraining E/TouchTraining: dispatchTouchEvent分发工作ACTION_UP

com.training.cj.mytraining E/TouchViewGroup: dispatchTouchEvent分发工作ACTION_UP

成果剖析:Touch事理由TouchTraining的dispatchTouchEvent赓续向TouchViewGroup分发,

TouchViewGroup的dispatchTouchEvent回来true,TouchViewGroup在dispatchTouchEvent中赓续消

费来自TouchTraining的dispatchTouchEvent分发的工作

计划3

前提

控件名称

dispatchTouchEvent回来值

onInterceptTouchEvent 回来值

onTouchEvent 回来值

TouchTraining

super.dispatchTouchEvent(ev)

----

super.onTouchEvent(ev)

TouchViewGroup

super.onInterceptTouchEvent(ev)

true

super.onTouchEvent(ev)

TouchView

super.dispatchTouchEvent(ev)

----

super.onTouchEvent(ev)

运转成果:

com.training.cj.mytraining E/TouchTraining: dispatchTouchEvent分发工作ACTION_DOWN

com.training.cj.mytraining E/TouchViewGroup: dispatchTouchEvent分发工作ACTION_DOWN

com.training.cj.mytraining E/TouchViewGroup: onInterceptTouchEvent阻挠工作ACTION_DOWN

com.training.cj.mytraining E/TouchViewGroup: onTouchEvent处置惩罚工作ACTION_DOWN

com.training.cj.mytraining E/TouchTraining: onTouchEvent处置惩罚工作ACTION_DOWN

com.training.cj.mytraining E/TouchTraining: dispatchTouchEvent分发工作ACTION_UP

com.training.cj.mytraining E/TouchTraining: onTouchEvent处置惩罚工作ACTION_UP

成果剖析:Touch工作发生发火,调用TouchTraining的dispatchTouchEvent分发工作到TouchViewGroup

的dispatchTouchEvent,TouchViewGroup的dispatchTouchEvent回来super.onInterceptTouchEvent(ev)进

行工作分发,工作向下通报给TouchViewGroup的onInterceptTouchEvent,TouchViewGroup的onInterceptTouchEvent回来true,工作被阻挠并通报给TouchViewGroup的onTouchEvent进行花费,TouchViewGroup的onTouchEvent回来super.dispatchTouchEvent(ev),对Touch工作未花费并回来给上级控件的onTouchEvent进行花费,由于TouchViewGroup的Touch工作来自TouchTraining,以是终极 由TouchTraining的onTouchEvent进行花费

计划4

前提

控件名称

dispatchTouchEvent回来值

onInterceptTouchEvent 回来值

onTouchEvent 回来值

TouchTraining

super.dispatchTouchEvent(ev)

----

super.onTouchEvent(ev)

TouchViewGroup

super.onInterceptTouchEvent(ev)

false

super.onTouchEvent(ev)

TouchView

super.dispatchTouchEvent(ev)

----

super.onTouchEvent(ev)

运转成果:

com.training.cj.mytraining E/TouchTraining: dispatchTouchEvent分发工作ACTION_DOWN

com.training.cj.mytraining E/ptw8 派通娱乐 首页TouchViewGroup: dispatchTouchEvent分发工作ACTION_DOWN

com.training.cj.mytraining E/TouchViewGroup: onInterceptTouchEvent阻挠工作ACTION_DOWN

com.training.cj.mytraining E/TouchView: dispatchTouchEvent分发工作ACTION_DOWN

com.training.cj.mytraining E/TouchView: onTouchEvent处置惩罚工作ACTION_DOWN

com.training.cj.mytraining E/TouchViewGroup: onTouchEvent处置惩罚工作ACTION_DOWN

com.training.cj.mytraining E/TouchTraining: onTouchEvent处置惩罚工作ACTION_DOWN

com.training.cj.mytraining E/TouchTraining: dispatchTouchEvent分发工作ACTION_UP

com.training.cj.mytraining E/TouchTraining: onTouchEvent处置惩罚工作ACTION_UP

成果剖析:Touch工作发生发火,调用TouchTraining的dispatchTouchEvent分发工作到TouchViewGroup的dispatchTouchEvent,TouchViewGroup的dispatchTouchEvent回来super.onInterceptTouchEvent(ev),持续分发向下通报工作到TouchViewGroup的onInterceptTouchEvent,TouchViewGroup的onInterceptTouchEvent回来false,持续分发向下通报工作到TouchView的dispatchTouchEvent,TouchView的dispatchTouchEvent回来super.dispatchTouchEvent(ev),持续分发向下通报工作到TouchView的onTouchEvent,TouchView的onTouchEvent回来super.onTouchEvent(ev),工作没有花费,回来给上级TouchViewGroup的onTouchEvent进行花费,TouchViewGroup的

onTouchEvent回来super.onTouchEvent(ev),持续回来给上级TouchTraining的onTouchEvent进行花费

计划5:

前提

控件名称

dispatchTouchEvent回来值

onInterceptTouchEvent 回来值

onTouchEvent 回来值

TouchTraining

super.dispatchTouchEvent(ev)

----

super.onTouchEvent(ev)

TouchViewGroup

super.onInterceptTouchEvent(ev)

false

super.onTouchEvent(ev)

TouchView

true

----

super.onTouchEvent(ev)

运转成果:

com.training.cj.mytraining E/TouchTraining: dispatchTouchEvent分发工作ACTION_DOWN

com.training.cj.mytraining E/TouchViewGroup: dispatchTouchEvent分发工作ACTION_DOWN

com.training.cj.mytraining E/TouchViewGroup: onInterceptTouchEvent阻挠工作ACTION_DOWN

com.training.cj.mytraining E/TouchView: dispatchTouchEvent分发工作ACTION_DOWN

com.training.cj.mytraining E/TouchView: onTouchEvent处置惩罚工作ACTION_DOWN

com.training.cj.mytraining E/TouchTraining: dispatchTouchEvent分发工作ACTION_UP

com.training.cj.mytraining E/TouchViewGroup: dispatchTouchEvent分发工作ACTION_UP

com.training.cj.mytraining E/TouchViewGroup: onInterceptTouchEvent阻挠工作ACTION_UP

com.training.cj.mytraining E/TouchView: dispatchTouchEvent分发工作ACTION_UP

com.training.cj.mytraining E/TouchView: onTouchEvent处置惩罚工作ACTION_UP

成果剖析:Touch工作发生发火,调用TouchTraining的dispatchTouchEvent分发工作到TouchViewGroup的dispatchTouchEvent,该法子回来super.dispatchTouchEvent(ev),持续分发工作到TouchViewGroup的onInterceptTouchEvent,该法子回来false,持续分发工作到TouchView的dispatchTouchEvent,该法子回来super.dispatchTouchEvent(ev),持续分发工作到onTouchEvent,由于onTouchEvent回来true,注解花费了工作,Touch工作竣事

好了,本期的Touch工作剖析到这儿就完毕了,其余,还有一个小细节需求把稳的是,在View和View Group中的onTouchEvent法子默许回来false,View Group中的onInterceptTouchEvent也默许回来false以是上面5种计划描画出了统统的Touch工作通报大概懂得Touch工作的分发和花费机制,更有利于咱们自界说控件,当然咱们在自界说控件时,只管即便不要重写dispatchTouchEvent这个法子

本贴参阅博客:http://www.cnblogs.com/sunzn/archive/2013/05/10/.html

这篇文章出自 “法度榜样员的人生” 博客,请必须保存此出处http://geektraining.blog.51cto.com//

  本文系中国润滑油信息网(www.sinolub.com)原创作品,若需转载务必以超链接的形式注明出处,转载时严禁任何有悖原文的文字修改;本网有权对所有侵权行为进行责任追究。

分享到: QQ空间 新浪微博 人人网 开心网 腾讯微博 更多

相关新闻

友情提醒

本信息真实性未经中国润滑油信息网证实,仅供您参考。未经许可,请勿转载。已经本网授权使用的,应在授权范围内使用,并注明“来源:中国润滑油信息网”。

本网部分文章转载自其它媒体,转载目的在于传递更多行业信息,并不代表本网赞同其观点和对其真实性负责。在本网论坛上发表言论者,文责自负,本网有权在网站内转载或引用,论坛的言论不代表本网观点。本网所提供的信息,如需使用,请与原作者联系,版权归原作者所有。如果涉及版权需要同本网联系的,请在15日内进行。

官方微博

热点招商

奥吉星润滑油全国招商

奥吉星润滑油(天泰集团化工控股有限公司 股票代码:GTS)是由天泰控股的专业润滑油生产企业。 全国招商热线:400-0635-789

Gulf海湾石油面向全国招商

海湾石油(中国)有限公司是Gulf Oil International 在国内的唯一子公司。 现诚招经销商。 招商热线:0535-2161171

埃尼润滑油面向全国招商

埃尼是一家综合性能源企业,业务遍及83个国家,拥有84,000名员工,从事石油和天然气勘探、生产、运输、转化和营销活动,业务涉及化工、油田服务、建筑和工程领域。

关于我们|本网动态|广告服务|联系方式|免责声明|版权信息|法律顾问
CopyRight©2015-2016 Sinolub.Com All Rights Reserved 九鼎公司 版权所有
《中华人民共和国增值电信业务经营许可证》编号:粤B2-20050302
服务热线:0754-88650988 在线服务QQ:619128006 润滑油商机信息群:③:50693127 ④:65958932