<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_android diordna</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/70231/rss</id><updated>2011-12-18T16:05:54Z</updated><author><name>allin.android</name><uri>http://www.cnblogs.com/allin/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/allin/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/70231/rss"/><entry><id>http://www.cnblogs.com/allin/archive/2011/12/19/2292772.html</id><title type="text">资讯类应用集合</title><summary type="text"/><published>2011-12-18T16:03:00Z</published><updated>2011-12-18T16:03:00Z</updated><author><name>allin.android</name><uri>http://www.cnblogs.com/allin/</uri></author><link rel="alternate" href="http://www.cnblogs.com/allin/archive/2011/12/19/2292772.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/allin/archive/2011/12/19/2292772.html"/><content type="html">&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/130995/2011121900014797.jpg" alt="" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/allin/aggbug/2292772.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/allin/archive/2011/12/19/2292772.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/allin/archive/2011/11/22/2259547.html</id><title type="text">一个被下架的App</title><summary type="text">最近在某电子市场提交了一个应用《美女App》，结果被下架了，理由是：“您好，请你修改您程序中不和谐的图片重新提交，感谢您对XX市场的支持和理解~~谢谢合作！”与客服沟通后得出的结论是，应用中的美女图片不能“露沟”，表情不能“淫荡”...无语....又没有漏点，只是比较清凉而已，淫不淫荡也得见仁见智吧～可以下来看看是不是不和谐http://static.yingyonghui.com/apk/181141/org.allin.app.grilPhoto.1321850350751.apk</summary><published>2011-11-22T14:48:00Z</published><updated>2011-11-22T14:48:00Z</updated><author><name>allin.android</name><uri>http://www.cnblogs.com/allin/</uri></author><link rel="alternate" href="http://www.cnblogs.com/allin/archive/2011/11/22/2259547.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/allin/archive/2011/11/22/2259547.html"/><content type="html">&lt;p&gt;最近在某电子市场提交了一个应用《美女App》，结果被下架了，&lt;/p&gt;&lt;p&gt;理由是：&amp;ldquo;您好，请你修改您程序中不和谐的图片重新提交，感谢您对XX市场的支持和理解~~谢谢合作！&amp;rdquo;&lt;/p&gt;&lt;p&gt;与客服沟通后得出的结论是，应用中的美女图片不能&amp;ldquo;露沟&amp;rdquo;，表情不能&amp;ldquo;淫荡&amp;rdquo;...&lt;/p&gt;&lt;p&gt;无语....&lt;/p&gt;&lt;p&gt;又没有漏点，只是比较清凉而已，淫不淫荡也得见仁见智吧～&lt;/p&gt;&lt;p&gt;&lt;a href="http://static.yingyonghui.com/apk/181141/org.allin.app.grilPhoto.1321850350751.apk"&gt;可以下来看看是不是不和谐&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://static.yingyonghui.com/apk/181141/org.allin.app.grilPhoto.1321850350751.apk"&gt;http://static.yingyonghui.com/apk/181141/org.allin.app.grilPhoto.1321850350751.apk&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/130995/2011112222480273.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/130995/2011112222315348.jpg" alt="" width="300" height="500" /&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2011/130995/2011112222320962.jpg" alt="" height="500" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/130995/2011112222322328.jpg" alt="" height="500" /&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2011/130995/2011112222344015.jpg" alt="" height="500" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/allin/aggbug/2259547.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/allin/archive/2011/11/22/2259547.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/allin/archive/2011/08/24/2152077.html</id><title type="text">onInterceptTouchEvent和onTouchEvent调用时序</title><summary type="text">onInterceptTouchEvent()是ViewGroup的一个方法，目的是在系统向该ViewGroup及其各个childView触发onTouchEvent()之前对相关事件进行一次拦截，Android这么设计的想法也很好理解，由于ViewGroup会包含若干childView,因此需要能够统一监控各种touch事件的机会，因此纯粹的不能包含子view的控件是没有这个方法的，如LinearLayout就有，TextView就没有。 onInterceptTouchEvent()使用也很简单，如果在ViewGroup里覆写了该方法，那么就可以对各种touch事件加以拦截。但是如何拦截，是否所有的touch事件都需要拦截则是比较复杂的，touch事件在onInterceptTouchEvent()和onTouchEvent以及各个childView间的传递机制完全取决于onInterceptTouchEvent()和onTouchEvent()的返回值。并且，针对down事件处理的返回值直接影响到后续move和up事件的接收和传递。</summary><published>2011-08-24T07:25:00Z</published><updated>2011-08-24T07:25:00Z</updated><author><name>allin.android</name><uri>http://www.cnblogs.com/allin/</uri></author><link rel="alternate" href="http://www.cnblogs.com/allin/archive/2011/08/24/2152077.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/allin/archive/2011/08/24/2152077.html"/><content type="html">&lt;p&gt;&lt;span class="Apple-style-span" style="color: #333333; font-size: 14px; line-height: 26px;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 21pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;onInterceptTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;是&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;ViewGroup&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的一个方法，目的是在系统向该&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;ViewGroup&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;及其各个&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;childView&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;触发&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;onTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;之前对相关事件进行一次拦截，&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;Android&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;这么设计的想法也很好理解，由于&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;ViewGroup&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;会包含若干&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;childView,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;因此需要能够统一监控各种&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;touch&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;事件的机会，因此纯粹的不能包含子&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;view&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的控件是没有这个方法的，如&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;LinearLayout&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;就有，&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;TextView&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;就没有。&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 21pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;onInterceptTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;使用也很简单，如果在&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;ViewGroup&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;里覆写了该方法，那么就可以对各种&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;touch&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;事件加以拦截。但是如何拦截，是否所有的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;touch&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;事件都需要拦截则是比较复杂的，&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;touch&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;事件在&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;onInterceptTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;onTouchEvent&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;以及各个&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;childView&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;间的传递机制完全取决于&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;onInterceptTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;onTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的返回值。并且，针对&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;down&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;事件处理的返回值直接影响到后续&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;move&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;up&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;事件的接收和传递。&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 21pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: 宋体;"&gt;关于返回值的问题，基本规则很清楚，如果&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;return true,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;那么表示该方法消费了此次事件，如果&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;return false&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，那么表示该方法并未处理完全，该事件仍然需要以某种方式传递下去继续等待处理。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;SDK&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;给出的说明如下：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial; text-align: left; line-height: 10.85pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US" style="font-family: Symbol; color: #333333; font-size: 9pt;"&gt;&amp;middot;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Arial, sans-serif; color: #333333; font-size: 9pt;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Arial, sans-serif; color: #333333; font-size: 9pt;"&gt;You will receive the down event here.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial; text-align: left; line-height: 10.85pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US" style="font-family: Symbol; color: #333333; font-size: 9pt;"&gt;&amp;middot;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Arial, sans-serif; color: #333333; font-size: 9pt;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Arial, sans-serif; color: #333333; font-size: 9pt;"&gt;The down event will be handled either by a child of this view group, or given to your own onTouchEvent() method to handle; this means you should implement onTouchEvent() to return true, so you will continue to see the rest of the gesture (instead of looking for a parent view to handle it). Also, by returning true from onTouchEvent(), you will not receive any following events in onInterceptTouchEvent() and all touch processing must happen in onTouchEvent() like normal.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial; text-align: left; line-height: 10.85pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US" style="font-family: Symbol; color: #333333; font-size: 9pt;"&gt;&amp;middot;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Arial, sans-serif; color: #333333; font-size: 9pt;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Arial, sans-serif; color: #333333; font-size: 9pt;"&gt;For as long as you return false from this function, each following event (up to and including the final up) will be delivered first here and then to the target's onTouchEvent().&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US" style="font-family: Symbol; color: #333333; font-size: 9pt;"&gt;&amp;middot;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Arial, sans-serif; color: #333333; font-size: 9pt;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Arial, sans-serif; color: #333333; font-size: 9pt;"&gt;If you return true from here, you will not receive any following events: the target view will receive the same event but with the action&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Arial, sans-serif; color: #333333; font-size: 9pt;"&gt;&amp;nbsp;ACTION_CANCEL&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Arial, sans-serif; color: #333333; font-size: 9pt;"&gt;, and all further events will be delivered to your onTouchEvent() method and no longer appear here.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: 宋体;"&gt;由于&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;onInterceptTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的机制比较复杂，上面的说明写的也比较复杂，总结一下，基本的规则是：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraph" style="font-family: Arial; text-indent: -18pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;1.&lt;/span&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;down&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;事件首先会传递到&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;onInterceptTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;方法&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraph" style="font-family: Arial; text-indent: -18pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;2.&lt;/span&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: 宋体;"&gt;如果该&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;ViewGroup&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;onInterceptTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;在接收到&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;down&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;事件处理完成之后&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;return false&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，那么后续的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;move, up&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;等事件将继续会先传递给该&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;ViewGroup&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，之后才和&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;down&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;事件一样传递给最终的目标&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;view&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;onTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;处理。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraph" style="font-family: Arial; text-indent: -18pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;3.&lt;/span&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: 宋体;"&gt;如果该&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;ViewGroup&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;onInterceptTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;在接收到&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;down&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;事件处理完成之后&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;return true&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，那么后续的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;move, up&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;等事件将不再传递给&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;onInterceptTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，而是和&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;down&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;事件一样传递给该&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;ViewGroup&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;onTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;处理，注意，目标&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;view&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;将接收不到任何事件。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraph" style="font-family: Arial; text-indent: -18pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;4.&lt;/span&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: 宋体;"&gt;如果最终需要处理事件的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;view&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;onTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;返回了&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;false&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，那么该事件将被传递至其上一层次的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;view&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;onTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;处理。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraph" style="font-family: Arial; text-indent: -18pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;5.&lt;/span&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: 宋体;"&gt;如果最终需要处理事件的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;view&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;onTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;返回了&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;true&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，那么后续事件将可以继续传递给该&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;view&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;onTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;处理。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: 宋体;"&gt;下面用一个简单的实验说明上述复杂的规则。视图自底向上共&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;3&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;层，其中&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;LayoutView1&lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 10pt;"&gt;和&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;LayoutView2&lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 10pt;"&gt;就是&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;LinearLayout&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，&lt;/span&gt;&lt;span&gt;&lt;span style="font-family: Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;MyTextView&lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 10pt;"&gt;就是&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;TextView&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: 宋体;"&gt;对应的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;xml&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;布局文件如下：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial; text-align: left; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; color: teal; font-size: 10pt;"&gt;&amp;lt;?&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt;"&gt;xml&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&lt;span style="color: #7f007f;"&gt;version&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;em&gt;&lt;span style="color: #2a00ff;"&gt;"1.0"&lt;/span&gt;&lt;/em&gt;&amp;nbsp;&lt;span style="color: #7f007f;"&gt;encoding&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;em&gt;&lt;span style="color: #2a00ff;"&gt;"utf-8"&lt;/span&gt;&lt;/em&gt;&lt;span style="color: teal;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial; text-align: left; text-indent: -20pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 20pt;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt;"&gt;com.touchstudy.LayoutView1&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&lt;span style="color: #7f007f;"&gt;xmlns:android&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;em&gt;&lt;span style="color: #2a00ff;"&gt;"http://schemas.android.com/apk/res/android"&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial; text-align: left; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #7f007f;"&gt;android:orientation&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;em&gt;&lt;span style="color: #2a00ff;"&gt;"vertical"&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial; text-align: left; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #7f007f;"&gt;android:layout_width&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;em&gt;&lt;span style="color: #2a00ff;"&gt;"fill_parent"&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial; text-align: left; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #7f007f;"&gt;android:layout_height&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;em&gt;&lt;span style="color: #2a00ff;"&gt;"fill_parent"&lt;/span&gt;&lt;/em&gt;&amp;nbsp;&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial; text-align: left; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; color: black; font-size: 10pt;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt;"&gt;com.touchstudy.LayoutView2&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial; text-align: left; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #7f007f;"&gt;android:orientation&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;em&gt;&lt;span style="color: #2a00ff;"&gt;"vertical"&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial; text-align: left; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #7f007f;"&gt;android:layout_width&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;em&gt;&lt;span style="color: #2a00ff;"&gt;"fill_parent"&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial; text-align: left; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #7f007f;"&gt;android:layout_height&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;em&gt;&lt;span style="color: #2a00ff;"&gt;"fill_parent"&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial; text-align: left; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #7f007f;"&gt;android:gravity&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;em&gt;&lt;span style="color: #2a00ff;"&gt;"center"&lt;/span&gt;&lt;/em&gt;&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial; text-align: left; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; color: black; font-size: 10pt;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt;"&gt;com.touchstudy.MyTextView&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial; text-align: left; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #7f007f;"&gt;android:layout_width&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;em&gt;&lt;span style="color: #2a00ff;"&gt;"wrap_content"&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial; text-align: left; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #7f007f;"&gt;android:layout_height&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;em&gt;&lt;span style="color: #2a00ff;"&gt;"wrap_content"&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial; text-align: left; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #7f007f;"&gt;android:id&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;em&gt;&lt;span style="color: #2a00ff;"&gt;"@+id/tv"&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial; text-align: left; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #7f007f;"&gt;android:text&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;em&gt;&lt;span style="color: #2a00ff;"&gt;"AB"&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial; text-align: left; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #7f007f;"&gt;android:textSize&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;em&gt;&lt;span style="color: #2a00ff;"&gt;"40sp"&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial; text-align: left; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #7f007f;"&gt;android:textStyle&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;em&gt;&lt;span style="color: #2a00ff;"&gt;"bold"&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial; text-align: left; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #7f007f;"&gt;android:background&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;em&gt;&lt;span style="color: #2a00ff;"&gt;"#FFFFFF"&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial; text-align: left; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #7f007f;"&gt;android:textColor&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;em&gt;&lt;span style="color: #2a00ff;"&gt;"#0000FF"&lt;/span&gt;&lt;/em&gt;&lt;span style="color: teal;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial; text-align: left; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; color: black; font-size: 10pt;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt;"&gt;com.touchstudy.LayoutView2&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial; text-align: left; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt;"&gt;com.touchstudy.LayoutView1&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: 宋体;"&gt;下面看具体情况：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraph" style="font-family: Arial; text-indent: -18pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&lt;strong&gt;&lt;span lang="EN-US" style="color: #7030a0;"&gt;&lt;span&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;1.&lt;/span&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;&lt;span lang="EN-US" style="color: #7030a0;"&gt;&lt;span style="font-family: Calibri;"&gt;onInterceptTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; color: #7030a0;"&gt;处理&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang="EN-US" style="color: #7030a0;"&gt;&lt;span style="font-family: Calibri;"&gt;down&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; color: #7030a0;"&gt;事件均返回&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang="EN-US" style="color: #7030a0;"&gt;&lt;span style="font-family: Calibri;"&gt;false&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; color: #7030a0;"&gt;，&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang="EN-US" style="color: #7030a0;"&gt;&lt;span style="font-family: Calibri;"&gt;onTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; color: #7030a0;"&gt;处理事件均返回&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang="EN-US" style="color: #7030a0;"&gt;&lt;span style="font-family: Calibri;"&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraph" style="font-family: Arial; text-indent: 0cm; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;------------------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 15.75pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;04-11 03:58:42.620: DEBUG/LayoutView1(614): onInterceptTouchEvent action:ACTION_DOWN&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 15.75pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;04-11 03:58:42.620: DEBUG/LayoutView2(614): onInterceptTouchEvent action:ACTION_DOWN&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 15.75pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;04-11 03:58:42.620: DEBUG/MyTextView(614): onTouchEvent action:ACTION_DOWN&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 15.75pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;04-11 03:58:42.800: DEBUG/LayoutView1(614): onInterceptTouchEvent action:ACTION_MOVE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 15.75pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;04-11 03:58:42.800: DEBUG/LayoutView2(614): onInterceptTouchEvent action:ACTION_MOVE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 15.75pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;04-11 03:58:42.800: DEBUG/MyTextView(614): onTouchEvent action:ACTION_MOVE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 15.75pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&amp;hellip;&amp;hellip; //&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;省略过多的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;ACTION_MOVE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 15.75pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;04-11 03:58:43.130: DEBUG/LayoutView1(614): onInterceptTouchEvent action:ACTION_UP&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 15.75pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;04-11 03:58:43.130: DEBUG/LayoutView2(614): onInterceptTouchEvent action:ACTION_UP&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 15.75pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;04-11 03:58:43.150: DEBUG/MyTextView(614): onTouchEvent action:ACTION_UP&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 15.75pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;------------------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 15.75pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: 宋体;"&gt;这是最常见的情况，&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;onInterceptTouchEvent&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;并没有做任何改变事件传递时序的操作，效果上和没有覆写该方法是一样的。可以看到，各种事件的传递本身是自底向上的，次序是：&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;LayoutView1-&amp;gt;LayoutView2-&amp;gt;MyTextView&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;strong&gt;注意，在&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;onInterceptTouchEvent&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;均返回&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;false&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;时，&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;LayoutView1&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;LayoutView2&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;onTouchEvent&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;并不会收到事件&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体;"&gt;，而是最终传递给了&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;MyTextView&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 15.8pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;strong&gt;&lt;span lang="EN-US" style="color: #0070c0;"&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoListParagraph" style="font-family: Arial; text-indent: -18pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&lt;strong&gt;&lt;span lang="EN-US" style="color: #7030a0;"&gt;&lt;span&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;2.&lt;/span&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;&lt;span lang="EN-US" style="color: #7030a0;"&gt;&lt;span style="font-family: Calibri;"&gt;LayoutView1&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; color: #7030a0;"&gt;的&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang="EN-US" style="color: #7030a0;"&gt;&lt;span style="font-family: Calibri;"&gt;onInterceptTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; color: #7030a0;"&gt;处理&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang="EN-US" style="color: #7030a0;"&gt;&lt;span style="font-family: Calibri;"&gt;down&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; color: #7030a0;"&gt;事件返回&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang="EN-US" style="color: #7030a0;"&gt;&lt;span style="font-family: Calibri;"&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; color: #7030a0;"&gt;，&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraph" style="font-family: Arial; text-indent: 0cm; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;&lt;span lang="EN-US" style="color: #7030a0;"&gt;&lt;span style="font-family: Calibri;"&gt;MyTextView&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; color: #7030a0;"&gt;的&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang="EN-US" style="color: #7030a0;"&gt;&lt;span style="font-family: Calibri;"&gt;onTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; color: #7030a0;"&gt;处理事件返回&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang="EN-US" style="color: #7030a0;"&gt;&lt;span style="font-family: Calibri;"&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraph" style="font-family: Arial; text-indent: 0cm; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;------------------------------------------------------------------------------------------------------------------------------&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;04-11 03:09:27.589: DEBUG/LayoutView1(446): onInterceptTouchEvent action:ACTION_DOWN&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;04-11 03:09:27.589: DEBUG/LayoutView1(446): onTouchEvent action:ACTION_DOWN&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;04-11 03:09:27.629: DEBUG/LayoutView1(446): onTouchEvent action:ACTION_MOVE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;04-11 03:09:27.689: DEBUG/LayoutView1(446): onTouchEvent action:ACTION_MOVE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&amp;hellip;&amp;hellip; //&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;省略过多的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;ACTION_MOVE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;04-11 03:09:27.959: DEBUG/LayoutView1(446): onTouchEvent action:ACTION_UP&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 15.75pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;------------------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 17.95pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: 宋体;"&gt;从&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;Log&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;可以看到，由于&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;LayoutView1&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;在拦截第一次&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;down&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;事件时&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;return true&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，所以后续的事件（包括第一次的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;down&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;）将由&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;LayoutView1&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;本身处理，事件不再传递下去。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraph" style="font-family: Arial; text-indent: -18pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;3.&lt;/span&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;&lt;span lang="EN-US" style="color: #7030a0;"&gt;&lt;span style="font-family: Calibri;"&gt;LayoutView1&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; color: #7030a0;"&gt;，&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang="EN-US" style="color: #7030a0;"&gt;&lt;span style="font-family: Calibri;"&gt;LayoutView2&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; color: #7030a0;"&gt;的&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang="EN-US" style="color: #7030a0;"&gt;&lt;span style="font-family: Calibri;"&gt;onInterceptTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; color: #7030a0;"&gt;处理&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang="EN-US" style="color: #7030a0;"&gt;&lt;span style="font-family: Calibri;"&gt;down&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; color: #7030a0;"&gt;事件返回&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang="EN-US" style="color: #7030a0;"&gt;&lt;span style="font-family: Calibri;"&gt;false&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; color: #7030a0;"&gt;，&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraph" style="font-family: Arial; text-indent: 0cm; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;&lt;span lang="EN-US" style="color: #7030a0;"&gt;&lt;span style="font-family: Calibri;"&gt;MyTextView&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; color: #7030a0;"&gt;的&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang="EN-US" style="color: #7030a0;"&gt;&lt;span style="font-family: Calibri;"&gt;onTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; color: #7030a0;"&gt;处理事件返回&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang="EN-US" style="color: #7030a0;"&gt;&lt;span style="font-family: Calibri;"&gt;false&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraph" style="font-family: Arial; text-indent: 0cm; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;&lt;span lang="EN-US" style="color: #7030a0;"&gt;&lt;span style="font-family: Calibri;"&gt;LayoutView2&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; color: #7030a0;"&gt;的&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang="EN-US" style="color: #7030a0;"&gt;&lt;span style="font-family: Calibri;"&gt;onTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; color: #7030a0;"&gt;处理事件返回&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang="EN-US" style="color: #7030a0;"&gt;&lt;span style="font-family: Calibri;"&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraph" style="font-family: Arial; text-indent: 0cm; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;----------------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 21pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;04-11 09:50:21.147: DEBUG/LayoutView1(301): onInterceptTouchEvent action:ACTION_DOWN&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 21pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;04-11 09:50:21.147: DEBUG/LayoutView2(301): onInterceptTouchEvent action:ACTION_DOWN&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 21pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;04-11 09:50:21.147: DEBUG/MyTextView(301): onTouchEvent action:ACTION_DOWN&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 21pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US" style="color: red;"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;04-11 09:50:21.147: DEBUG/LayoutView2(301): onTouchEvent action:ACTION_DOWN&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 21pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;04-11 09:50:21.176: DEBUG/LayoutView1(301): onInterceptTouchEvent action:ACTION_MOVE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 21pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;04-11 09:50:21.176: DEBUG/LayoutView2(301): onTouchEvent action:ACTION_MOVE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 21pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;04-11 09:50:21.206: DEBUG/LayoutView1(301): onInterceptTouchEvent action:ACTION_MOVE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 21pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;04-11 09:50:21.217: DEBUG/LayoutView2(301): onTouchEvent action:ACTION_MOVE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 21pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&amp;hellip;&amp;hellip; //&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;省略过多的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;ACTION_MOVE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial; text-indent: 21pt; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;04-11 09:50:21.486: DEBUG/LayoutView1(301): onInterceptTouchEvent action:ACTION_UP&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraph" style="font-family: Arial; text-indent: 0cm; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;04-11 09:50:21.486: DEBUG/LayoutView2(301): onTouchEvent action:ACTION_UP&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraph" style="font-family: Arial; text-indent: 0cm; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;----------------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraph" style="font-family: Arial; text-indent: 0cm; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: 宋体;"&gt;可以看到，由于&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;MyTextView&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;在&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;onTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;中&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;return false&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;down&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;事件被传递给其父&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;view&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，即&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;LayoutView2&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;onTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;方法处理，由于在&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;LayoutView2&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;onTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;中&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;return true&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，所以&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;down&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;事件传递并没有上传到&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;LayoutView1&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;strong&gt;注意，后续的&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;move&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;up&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;事件均被传递给&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;LayoutView2&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;onTouchEvent()&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;处理，而没有传递给&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;MyTextView&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraph" style="font-family: Arial; text-indent: 0cm; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoListParagraph" style="font-family: Arial; text-indent: 0cm; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;----------------------------------------------------------------------------------------------------------------&lt;/p&gt;&lt;p class="MsoListParagraph" style="font-family: Arial; text-indent: 0cm; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;应大家的要求，我把源代码贴上，其实很简单，就是基础文件，主要是用来观察事件的传递。&lt;/p&gt;&lt;p class="MsoListParagraph" style="font-family: Arial; text-indent: 0cm; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoListParagraph" style="font-family: Arial; text-indent: 0cm; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;主Activity: InterceptTouchStudyActivity.java：&lt;/p&gt;&lt;p class="MsoListParagraph" style="font-family: Arial; text-indent: 0cm; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;public&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;class&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;InterceptTouchStudyActivity&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;extends&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;Activity {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;static&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;final&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;String&amp;nbsp;&lt;/span&gt;&lt;em&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;/em&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US"&gt;"ITSActivity"&lt;/span&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TextView&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US"&gt;tv&lt;/span&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US"&gt;/** Called when the activity is first created. */&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US"&gt;@Override&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;public&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;void&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;onCreate(Bundle savedInstanceState) {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;super&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;.onCreate(savedInstanceState);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setContentView(R.layout.&lt;/span&gt;&lt;em&gt;&lt;span lang="EN-US"&gt;layers_touch_pass_test&lt;/span&gt;&lt;/em&gt;&lt;span lang="EN-US"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: mceinline;"&gt;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: mceinline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: mceinline;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;LayoutView1.java：&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraph" style="font-family: Arial; text-indent: 0cm; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;public&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;class&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;LayoutView1&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;extends&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;LinearLayout {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;private&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;final&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;String&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US"&gt;"LayoutView1"&lt;/span&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;public&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;LayoutView1(Context context, AttributeSet attrs) {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;super&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;(context, attrs);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.&lt;em&gt;d&lt;/em&gt;(&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;,&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: mceinline;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US"&gt;@Override&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;public&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;boolean&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;onInterceptTouchEvent(MotionEvent ev) {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;int&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;action = ev.getAction();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;switch&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;(action){&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;case&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;MotionEvent.&lt;/span&gt;&lt;em&gt;&lt;span lang="EN-US"&gt;ACTION_DOWN&lt;/span&gt;&lt;/em&gt;&lt;span lang="EN-US"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.&lt;em&gt;d&lt;/em&gt;(&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;,&lt;/span&gt;&lt;span lang="EN-US"&gt;"onInterceptTouchEvent action:ACTION_DOWN"&lt;/span&gt;&lt;span lang="EN-US"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;break&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;case&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;MotionEvent.&lt;/span&gt;&lt;em&gt;&lt;span lang="EN-US"&gt;ACTION_MOVE&lt;/span&gt;&lt;/em&gt;&lt;span lang="EN-US"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.&lt;em&gt;d&lt;/em&gt;(&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;,&lt;/span&gt;&lt;span lang="EN-US"&gt;"onInterceptTouchEvent action:ACTION_MOVE"&lt;/span&gt;&lt;span lang="EN-US"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;break&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;case&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;MotionEvent.&lt;/span&gt;&lt;em&gt;&lt;span lang="EN-US"&gt;ACTION_UP&lt;/span&gt;&lt;/em&gt;&lt;span lang="EN-US"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.&lt;em&gt;d&lt;/em&gt;(&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;,&lt;/span&gt;&lt;span lang="EN-US"&gt;"onInterceptTouchEvent action:ACTION_UP"&lt;/span&gt;&lt;span lang="EN-US"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;break&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;case&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;MotionEvent.&lt;/span&gt;&lt;em&gt;&lt;span lang="EN-US"&gt;ACTION_CANCEL&lt;/span&gt;&lt;/em&gt;&lt;span lang="EN-US"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.&lt;em&gt;d&lt;/em&gt;(&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;,&lt;/span&gt;&lt;span lang="EN-US"&gt;"onInterceptTouchEvent action:ACTION_CANCEL"&lt;/span&gt;&lt;span lang="EN-US"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;break&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;return&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;false&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: mceinline;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US"&gt;@Override&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;public&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;boolean&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;onTouchEvent(MotionEvent ev) {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;int&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;action = ev.getAction();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;switch&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;(action){&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;case&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;MotionEvent.&lt;/span&gt;&lt;em&gt;&lt;span lang="EN-US"&gt;ACTION_DOWN&lt;/span&gt;&lt;/em&gt;&lt;span lang="EN-US"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.&lt;em&gt;d&lt;/em&gt;(&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;,&lt;/span&gt;&lt;span lang="EN-US"&gt;"onTouchEvent action:ACTION_DOWN"&lt;/span&gt;&lt;span lang="EN-US"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;break&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;case&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;MotionEvent.&lt;/span&gt;&lt;em&gt;&lt;span lang="EN-US"&gt;ACTION_MOVE&lt;/span&gt;&lt;/em&gt;&lt;span lang="EN-US"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.&lt;em&gt;d&lt;/em&gt;(&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;,&lt;/span&gt;&lt;span lang="EN-US"&gt;"onTouchEvent action:ACTION_MOVE"&lt;/span&gt;&lt;span lang="EN-US"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;break&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;case&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;MotionEvent.&lt;/span&gt;&lt;em&gt;&lt;span lang="EN-US"&gt;ACTION_UP&lt;/span&gt;&lt;/em&gt;&lt;span lang="EN-US"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.&lt;em&gt;d&lt;/em&gt;(&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;,&lt;/span&gt;&lt;span lang="EN-US"&gt;"onTouchEvent action:ACTION_UP"&lt;/span&gt;&lt;span lang="EN-US"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;break&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;case&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;MotionEvent.&lt;/span&gt;&lt;em&gt;&lt;span lang="EN-US"&gt;ACTION_CANCEL&lt;/span&gt;&lt;/em&gt;&lt;span lang="EN-US"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.&lt;em&gt;d&lt;/em&gt;(&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;,&lt;/span&gt;&lt;span lang="EN-US"&gt;"onTouchEvent action:ACTION_CANCEL"&lt;/span&gt;&lt;span lang="EN-US"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;break&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;return&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;true&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: mceinline;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US"&gt;@Override&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;protected&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;void&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;onLayout(&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;boolean&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;changed,&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;int&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;l,&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;int&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;t,&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;int&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;r,&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;int&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;b) {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US"&gt;//&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;TODO&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;Auto-generated method stub&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;super&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;.onLayout(changed, l, t, r, b);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: mceinline;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US"&gt;@Override&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;protected&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;void&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;onMeasure(&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;int&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;widthMeasureSpec,&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;int&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;heightMeasureSpec) {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US"&gt;//&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;TODO&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;Auto-generated method stub&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;super&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;.&lt;span style="text-decoration: underline;"&gt;onMeasure&lt;/span&gt;(widthMeasureSpec, heightMeasureSpec);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: mceinline;"&gt;LayoutView2.java：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;public&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;class&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;LayoutView2&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;extends&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;LinearLayout {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;private&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;final&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;String&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US"&gt;"LayoutView2"&lt;/span&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;public&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;LayoutView2(Context context, AttributeSet attrs) {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;super&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;(context, attrs);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.&lt;em&gt;d&lt;/em&gt;(&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;,&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: mceinline;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US"&gt;@Override&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;public&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;boolean&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;onInterceptTouchEvent(MotionEvent ev) {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;int&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;action = ev.getAction();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;switch&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;(action){&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;case&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;MotionEvent.&lt;/span&gt;&lt;em&gt;&lt;span lang="EN-US"&gt;ACTION_DOWN&lt;/span&gt;&lt;/em&gt;&lt;span lang="EN-US"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.&lt;em&gt;d&lt;/em&gt;(&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;,&lt;/span&gt;&lt;span lang="EN-US"&gt;"onInterceptTouchEvent action:ACTION_DOWN"&lt;/span&gt;&lt;span lang="EN-US"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;break&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;case&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;MotionEvent.&lt;/span&gt;&lt;em&gt;&lt;span lang="EN-US"&gt;ACTION_MOVE&lt;/span&gt;&lt;/em&gt;&lt;span lang="EN-US"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.&lt;em&gt;d&lt;/em&gt;(&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;,&lt;/span&gt;&lt;span lang="EN-US"&gt;"onInterceptTouchEvent action:ACTION_MOVE"&lt;/span&gt;&lt;span lang="EN-US"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;break&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;case&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;MotionEvent.&lt;/span&gt;&lt;em&gt;&lt;span lang="EN-US"&gt;ACTION_UP&lt;/span&gt;&lt;/em&gt;&lt;span lang="EN-US"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.&lt;em&gt;d&lt;/em&gt;(&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;,&lt;/span&gt;&lt;span lang="EN-US"&gt;"onInterceptTouchEvent action:ACTION_UP"&lt;/span&gt;&lt;span lang="EN-US"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;break&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;case&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;MotionEvent.&lt;/span&gt;&lt;em&gt;&lt;span lang="EN-US"&gt;ACTION_CANCEL&lt;/span&gt;&lt;/em&gt;&lt;span lang="EN-US"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.&lt;em&gt;d&lt;/em&gt;(&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;,&lt;/span&gt;&lt;span lang="EN-US"&gt;"onInterceptTouchEvent action:ACTION_CANCEL"&lt;/span&gt;&lt;span lang="EN-US"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;break&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;return&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;false&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: mceinline;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US"&gt;@Override&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;public&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;boolean&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;onTouchEvent(MotionEvent ev) {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;int&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;action = ev.getAction();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;switch&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;(action){&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;case&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;MotionEvent.&lt;/span&gt;&lt;em&gt;&lt;span lang="EN-US"&gt;ACTION_DOWN&lt;/span&gt;&lt;/em&gt;&lt;span lang="EN-US"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.&lt;em&gt;d&lt;/em&gt;(&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;,&lt;/span&gt;&lt;span lang="EN-US"&gt;"onTouchEvent action:ACTION_DOWN"&lt;/span&gt;&lt;span lang="EN-US"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;break&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;case&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;MotionEvent.&lt;/span&gt;&lt;em&gt;&lt;span lang="EN-US"&gt;ACTION_MOVE&lt;/span&gt;&lt;/em&gt;&lt;span lang="EN-US"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.&lt;em&gt;d&lt;/em&gt;(&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;,&lt;/span&gt;&lt;span lang="EN-US"&gt;"onTouchEvent action:ACTION_MOVE"&lt;/span&gt;&lt;span lang="EN-US"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;break&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;case&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;MotionEvent.&lt;/span&gt;&lt;em&gt;&lt;span lang="EN-US"&gt;ACTION_UP&lt;/span&gt;&lt;/em&gt;&lt;span lang="EN-US"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.&lt;em&gt;d&lt;/em&gt;(&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;,&lt;/span&gt;&lt;span lang="EN-US"&gt;"onTouchEvent action:ACTION_UP"&lt;/span&gt;&lt;span lang="EN-US"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;break&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;case&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;MotionEvent.&lt;/span&gt;&lt;em&gt;&lt;span lang="EN-US"&gt;ACTION_CANCEL&lt;/span&gt;&lt;/em&gt;&lt;span lang="EN-US"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.&lt;em&gt;d&lt;/em&gt;(&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;,&lt;/span&gt;&lt;span lang="EN-US"&gt;"onTouchEvent action:ACTION_CANCEL"&lt;/span&gt;&lt;span lang="EN-US"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;break&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;return&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;true&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: mceinline;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: mceinline;"&gt;MyTextView.java:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;public&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;class&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;MyTextView&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;extends&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;TextView {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;private&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;final&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;String&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US"&gt;"MyTextView"&lt;/span&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;public&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;MyTextView(Context context, AttributeSet attrs) {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;super&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;(context, attrs);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.&lt;em&gt;d&lt;/em&gt;(&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;,&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: mceinline;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US"&gt;@Override&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;public&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;boolean&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;onTouchEvent(MotionEvent ev) {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;int&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;action = ev.getAction();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;switch&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;(action){&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;case&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;MotionEvent.&lt;/span&gt;&lt;em&gt;&lt;span lang="EN-US"&gt;ACTION_DOWN&lt;/span&gt;&lt;/em&gt;&lt;span lang="EN-US"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.&lt;em&gt;d&lt;/em&gt;(&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;,&lt;/span&gt;&lt;span lang="EN-US"&gt;"onTouchEvent action:ACTION_DOWN"&lt;/span&gt;&lt;span lang="EN-US"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;break&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;case&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;MotionEvent.&lt;/span&gt;&lt;em&gt;&lt;span lang="EN-US"&gt;ACTION_MOVE&lt;/span&gt;&lt;/em&gt;&lt;span lang="EN-US"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.&lt;em&gt;d&lt;/em&gt;(&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;,&lt;/span&gt;&lt;span lang="EN-US"&gt;"onTouchEvent action:ACTION_MOVE"&lt;/span&gt;&lt;span lang="EN-US"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;break&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;case&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;MotionEvent.&lt;/span&gt;&lt;em&gt;&lt;span lang="EN-US"&gt;ACTION_UP&lt;/span&gt;&lt;/em&gt;&lt;span lang="EN-US"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.&lt;em&gt;d&lt;/em&gt;(&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;,&lt;/span&gt;&lt;span lang="EN-US"&gt;"onTouchEvent action:ACTION_UP"&lt;/span&gt;&lt;span lang="EN-US"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;break&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;case&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;MotionEvent.&lt;/span&gt;&lt;em&gt;&lt;span lang="EN-US"&gt;ACTION_CANCEL&lt;/span&gt;&lt;/em&gt;&lt;span lang="EN-US"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.&lt;em&gt;d&lt;/em&gt;(&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;,&lt;/span&gt;&lt;span lang="EN-US"&gt;"onTouchEvent action:ACTION_CANCEL"&lt;/span&gt;&lt;span lang="EN-US"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;break&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;return&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;false&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;public&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;void&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;onClick(View v) {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.&lt;em&gt;d&lt;/em&gt;(&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US"&gt;"onClick"&lt;/span&gt;&lt;span lang="EN-US"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;public&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;boolean&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;onLongClick(View v) {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.&lt;em&gt;d&lt;/em&gt;(&lt;/span&gt;&lt;span lang="EN-US"&gt;TAG&lt;/span&gt;&lt;span lang="EN-US"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US"&gt;"onLongClick"&lt;/span&gt;&lt;span lang="EN-US"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;return&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;false&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left" style="font-family: Arial;"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: mceinline;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: Arial;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: mceinline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;【引用自&amp;nbsp;&lt;a href="http://blog.csdn.net/ddna/article/details/5473293"&gt;http://blog.csdn.net/ddna/article/details/5473293&lt;/a&gt;】&lt;span class="Apple-style-span" style="color: #333333; font-size: 14px; line-height: 26px;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;【引用自&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/allin/aggbug/2152077.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/allin/archive/2011/08/24/2152077.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/allin/archive/2011/08/24/2152072.html</id><title type="text">Android onTouchEvent, onClick及onLongClick的调用机制</title><summary type="text">针对屏幕上的一个View控件，Android如何区分应当触发onTouchEvent，还是onClick，亦或是onLongClick事件？在Android中，一次用户操作可以被不同的View按次序分别处理，并将完全响应了用户一次UI操作称之为消费了该事件(consume)，那么Android是按什么次序将事件传递的呢?又在什么情况下判定为消费了该事件？   搞清楚这些问题对于编写出能正确响应UI操作的代码是很重要的，尤其当屏幕上的不同View需要针对此次UI操作做出各种不同响应的时候更是如此，一个典型例子就是用户在桌面上放置了一个Widget，那么当用户针对widget做各种操作时，桌面本身有的时候要对用户的操作做出响应，有时忽略。只有搞清楚事件触发和传递的机制才有可能保证在界面布局非常复杂的情况下，UI控件仍然能正确响应用户操作。</summary><published>2011-08-24T07:23:00Z</published><updated>2011-08-24T07:23:00Z</updated><author><name>allin.android</name><uri>http://www.cnblogs.com/allin/</uri></author><link rel="alternate" href="http://www.cnblogs.com/allin/archive/2011/08/24/2152072.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/allin/archive/2011/08/24/2152072.html"/><content type="html">&lt;p&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial; font-size: 14px; line-height: 26px;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 针对屏幕上的一个&lt;span lang="EN-US"&gt;View&lt;/span&gt;控件，&lt;span lang="EN-US"&gt;Android&lt;/span&gt;如何区分应当触发&lt;span lang="EN-US"&gt;onTouchEvent&lt;/span&gt;，还是&lt;span lang="EN-US"&gt;onClick&lt;/span&gt;，亦或是&lt;span lang="EN-US"&gt;onLongClick&lt;/span&gt;事件？&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;在&lt;span lang="EN-US"&gt;Android&lt;/span&gt;中，一次用户操作可以被不同的&lt;span lang="EN-US"&gt;View&lt;/span&gt;按次序分别处理，并将完全响应了用户一次&lt;span lang="EN-US"&gt;UI&lt;/span&gt;操作称之为消费了该事件&lt;span lang="EN-US"&gt;(consume)&lt;/span&gt;，那么&lt;span lang="EN-US"&gt;Android&lt;/span&gt;是按什么次序将事件传递的呢&lt;span lang="EN-US"&gt;?&lt;/span&gt;又在什么情况下判定为消费了该事件？&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;搞清楚这些问题对于编写出能正确响应&lt;span lang="EN-US"&gt;UI&lt;/span&gt;操作的代码是很重要的，尤其当屏幕上的不同&lt;span lang="EN-US"&gt;View&lt;/span&gt;需要针对此次&lt;span lang="EN-US"&gt;UI&lt;/span&gt;操作做出各种不同响应的时候更是如此，一个典型例子就是用户在桌面上放置了一个&lt;span lang="EN-US"&gt;Widget&lt;/span&gt;，那么当用户针对&lt;span lang="EN-US"&gt;widget&lt;/span&gt;做各种操作时，桌面本身有的时候要对用户的操作做出响应，有时忽略。只有搞清楚事件触发和传递的机制才有可能保证在界面布局非常复杂的情况下，&lt;span lang="EN-US"&gt;UI&lt;/span&gt;控件仍然能正确响应用户操作。&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;1.&amp;nbsp; onTouchEvent&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraph" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; onTouchEvent&lt;/span&gt;中要处理的最常用的&lt;span lang="EN-US"&gt;3&lt;/span&gt;个事件就是：ACTION_DOWN、ACTION_MOVE、ACTION_UP。&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;这三个事件标识出了最基本的用户触摸屏幕的操作，含义也很清楚。虽然大家天天都在用它们，但是有一点请留意，&lt;span lang="EN-US"&gt;ACTION_DOWN&lt;/span&gt;事件作为起始事件，它的重要性是要超过&lt;span lang="EN-US"&gt;ACTION_MOVE&lt;/span&gt;和&lt;span lang="EN-US"&gt;ACTION_UP&lt;/span&gt;的，如果发生了ACTION_MOVE或者ACTION_UP，那么一定曾经发生了&lt;span lang="EN-US"&gt;ACTION_DOWN&lt;/span&gt;。&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;从&lt;span lang="EN-US"&gt;Android&lt;/span&gt;的源代码中能看到基于这种不同重要性的理解而实现的一些交互机制，&lt;span lang="EN-US"&gt;SDK&lt;/span&gt;中也有明确的提及，例如在&lt;span lang="EN-US"&gt;ViewGroup&lt;/span&gt;的&lt;span lang="EN-US"&gt;onInterceptTouchEvent&lt;/span&gt;方法中，如果在ACTION_DOWN事件中返回了&lt;span lang="EN-US"&gt;true&lt;/span&gt;，那么后续的事件将直接发给&lt;span lang="EN-US"&gt;onTouchEvent&lt;/span&gt;，而不是继续发给&lt;span lang="EN-US"&gt;onInterceptTouchEvent&lt;/span&gt;。&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;2.&amp;nbsp; onClick&lt;/span&gt;、&lt;span lang="EN-US"&gt;onLongClick&lt;/span&gt;与&lt;span lang="EN-US"&gt;onTouchEvent&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;曾经看过一篇帖子提到，如果在&lt;span lang="EN-US"&gt;View&lt;/span&gt;中处理了&lt;span lang="EN-US"&gt;onTouchEvent&lt;/span&gt;，那么就不用再处理&lt;span lang="EN-US"&gt;onClick&lt;/span&gt;了，因为&lt;span lang="EN-US"&gt;Android&lt;/span&gt;只会触发其中一个方法。这个理解是不太正确的，针对某个&lt;span lang="EN-US"&gt;view&lt;/span&gt;，用户完成了一次触碰操作，显然从传感器上得到的信号是手指按下和抬起两个操作，我们可以理解为一次&lt;span lang="EN-US"&gt;Click&lt;/span&gt;，也可以理解为发生了一次ACTION_DOWN和ACTION_UP，那么&lt;span lang="EN-US"&gt;Android&lt;/span&gt;是如何理解和处理的呢？&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;在&lt;span lang="EN-US"&gt;Android&lt;/span&gt;中，&lt;span lang="EN-US"&gt;onClick&lt;/span&gt;、&lt;span lang="EN-US"&gt;onLongClick&lt;/span&gt;的触发是和&lt;span lang="EN-US"&gt;ACTION_DOWN&lt;/span&gt;及&lt;span lang="EN-US"&gt;ACTION_UP&lt;/span&gt;相关的，在时序上，如果我们在一个&lt;span lang="EN-US"&gt;View&lt;/span&gt;中同时覆写了&lt;span lang="EN-US"&gt;onClick&lt;/span&gt;、&lt;span lang="EN-US"&gt;onLongClick&lt;/span&gt;及&lt;span lang="EN-US"&gt;onTouchEvent&lt;/span&gt;的话，&lt;span lang="EN-US"&gt;onTouchEvent&lt;/span&gt;是最先捕捉到&lt;span lang="EN-US"&gt;ACTION_DOWN&lt;/span&gt;和&lt;span lang="EN-US"&gt;ACTION_UP&lt;/span&gt;事件的，其次才可能触发&lt;span lang="EN-US"&gt;onClick&lt;/span&gt;或者&lt;span lang="EN-US"&gt;onLongClick&lt;/span&gt;。主要的逻辑在&lt;span lang="EN-US"&gt;View.java&lt;/span&gt;中的&lt;span lang="EN-US"&gt;onTouchEvent&lt;/span&gt;方法中实现的：&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;strong&gt;case MotionEvent.ACTION_DOWN&lt;/strong&gt;:&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mPrivateFlags |= PRESSED;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; refreshDrawableState();&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((mViewFlags &amp;amp; LONG_CLICKABLE) == LONG_CLICKABLE) {&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style="color: #ff0000;"&gt;postCheckForLongClick();&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;strong&gt;case MotionEvent.ACTION_UP&lt;/strong&gt;:&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((mPrivateFlags &amp;amp; PRESSED) != 0) {&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; boolean focusTaken = false;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (isFocusable() &amp;amp;&amp;amp; isFocusableInTouchMode() &amp;amp;&amp;amp; !isFocused()) {&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; focusTaken = requestFocus();&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!mHasPerformedLongPress) {&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (mPendingCheckForLongPress != null) {&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; removeCallbacks(mPendingCheckForLongPress);&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!focusTaken) {&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: #ff0000;"&gt;performClick();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;hellip;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;可以看到，&lt;span lang="EN-US"&gt;Click&lt;/span&gt;的触发是在系统捕捉到&lt;span lang="EN-US"&gt;ACTION_UP&lt;/span&gt;后发生并由&lt;span lang="EN-US"&gt;performClick()&lt;/span&gt;执行的，&lt;span lang="EN-US"&gt;performClick&lt;/span&gt;里会调用先前注册的监听器的&lt;span lang="EN-US"&gt;onClick()&lt;/span&gt;方法：&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;public boolean performClick() {&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;hellip;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (mOnClickListener != null) {&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; playSoundEffect(SoundEffectConstants.CLICK);&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;mOnClickListener.onClick(this);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;LongClick&lt;/span&gt;的触发则是从&lt;span lang="EN-US"&gt;ACTION_DOWN&lt;/span&gt;开始，由&lt;span lang="EN-US"&gt;postCheckForLongClick()&lt;/span&gt;方法完成：&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;private void postCheckForLongClick() {&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mHasPerformedLongPress = false;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (mPendingCheckForLongPress == null) {&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;mPendingCheckForLongPress = new CheckForLongPress();&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mPendingCheckForLongPress.rememberWindowAttachCount();&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;postDelayed(mPendingCheckForLongPress, ViewConfiguration.getLongPressTimeout());&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;可以看到，在&lt;span lang="EN-US"&gt;ACTION_DOWN&lt;/span&gt;事件被捕捉后，系统会开始触发一个&lt;span lang="EN-US"&gt;postDelayed&lt;/span&gt;操作，&lt;span lang="EN-US"&gt;delay&lt;/span&gt;的时间在&lt;span lang="EN-US"&gt;Eclair2.1&lt;/span&gt;上为&lt;span lang="EN-US"&gt;500ms&lt;/span&gt;，&lt;span lang="EN-US"&gt;500ms&lt;/span&gt;后会触发&lt;span lang="EN-US"&gt;CheckForLongPress&lt;/span&gt;线程的执行：&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;class CheckForLongPress implements Runnable {&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;hellip;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void run() {&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (isPressed() &amp;amp;&amp;amp; (mParent != null)&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;&amp;amp; mOriginalWindowAttachCount == mWindowAttachCount) {&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (&lt;span style="color: #0000ff;"&gt;performLongClick()&lt;/span&gt;) {&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mHasPerformedLongPress = true;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;hellip;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;如果各种条件都满足，那么在&lt;span lang="EN-US"&gt;CheckForLongPress&lt;/span&gt;中执行&lt;span lang="EN-US"&gt;performLongClick()&lt;/span&gt;，在这个方法中将调用&lt;span lang="EN-US"&gt;onLongClick()&lt;/span&gt;：&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;public boolean performLongClick() {&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;hellip;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (mOnLongClickListener != null) {&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;handled = mOnLongClickListener.onLongClick(View.this);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;hellip;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;从实现中可以看到&lt;span lang="EN-US"&gt;onClick()&lt;/span&gt;和&lt;span lang="EN-US"&gt;onLongClick()&lt;/span&gt;方法是由&lt;span lang="EN-US"&gt;ACTION_DOWN&lt;/span&gt;和&lt;span lang="EN-US"&gt;ACTION_UP&lt;/span&gt;事件捕捉后根据各种情况最终确定是否触发的，也就是说如果我们在一个&lt;span lang="EN-US"&gt;Activity&lt;/span&gt;或者&lt;span lang="EN-US"&gt;View&lt;/span&gt;中同时监听或者覆写了&lt;span lang="EN-US"&gt;onClick(),onLongClick()&lt;/span&gt;和&lt;span lang="EN-US"&gt;onTouchEvent()&lt;/span&gt;方法，并不意味着只会发生其中一种。&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;下面是一个&lt;span lang="EN-US"&gt;onClick&lt;/span&gt;被触发的基本时序的&lt;span lang="EN-US"&gt;Log&lt;/span&gt;：&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;04-05 05:57:47.123: DEBUG/TSActivity(209): onTouch ACTION_DOWN&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;04-05 05:57:47.263: DEBUG/TSActivity(209): onTouch ACTION_UP&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;04-05 05:57:47.323: DEBUG/TSActivity(209): onClick&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;可以看出是按&lt;span lang="EN-US"&gt;ACTION_DOWN -&amp;gt; ACTION_UP -&amp;gt; onClick&lt;/span&gt;的次序发生的。&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;下面是一个&lt;span lang="EN-US"&gt;onLongClick&lt;/span&gt;被触发的基本时序的&lt;span lang="EN-US"&gt;Log&lt;/span&gt;：&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;04-05 06:00:04.133: DEBUG/TSActivity(248): onTouch ACTION_DOWN&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;04-05 06:00:04.642: DEBUG/TSActivity(248): onLongClick&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;04-05 06:00:05.083: DEBUG/TSActivity(248): onTouch ACTION_UP&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;可以看到，在保持按下的状态一定时间后会触发&lt;span lang="EN-US"&gt;onLongClick,&lt;/span&gt;之后抬起手才会发生&lt;span lang="EN-US"&gt;ACTION_UP&lt;/span&gt;。&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;3.&amp;nbsp; onClick&lt;/span&gt;和&lt;span lang="EN-US"&gt;onLongClick&lt;/span&gt;能同时发生吗？&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;要弄清楚这个问题只要理解&lt;span lang="EN-US"&gt;Android&lt;/span&gt;对事件处理的所谓消费&lt;span lang="EN-US"&gt;(consume)&lt;/span&gt;概念即可，一个用户的操作会被传递到不同的&lt;span lang="EN-US"&gt;View&lt;/span&gt;控件和同一个控件的不同监听方法处理，任何一个接收并处理了该次事件的方法如果在处理完后返回了&lt;span lang="EN-US"&gt;true&lt;/span&gt;，那么该次&lt;span lang="EN-US"&gt;event&lt;/span&gt;就算被完全处理了，其他的&lt;span lang="EN-US"&gt;View&lt;/span&gt;或者监听方法就不会再有机会处理该&lt;span lang="EN-US"&gt;event&lt;/span&gt;了。&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;onLongClick&lt;/span&gt;的发生是由单独的线程完成的，并且在&lt;span lang="EN-US"&gt;ACTION_UP&lt;/span&gt;之前，而&lt;span lang="EN-US"&gt;onClick&lt;/span&gt;的发生是在&lt;span lang="EN-US"&gt;ACTION_UP&lt;/span&gt;后，因此同一次用户&lt;span lang="EN-US"&gt;touch&lt;/span&gt;操作就有可能既发生&lt;span lang="EN-US"&gt;onLongClick&lt;/span&gt;又发生&lt;span lang="EN-US"&gt;onClick&lt;/span&gt;。这样是不是不可思议？所以及时向系统表示&amp;ldquo;我已经完全处理（消费）了用户的此次操作&amp;rdquo;，是很重要的事情。例如，我们如果在&lt;span lang="EN-US"&gt;onLongClick()&lt;/span&gt;方法的最后&lt;span lang="EN-US"&gt;return true&lt;/span&gt;，那么&lt;span lang="EN-US"&gt;onClick&lt;/span&gt;事件就没有机会被触发了。&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;下面的&lt;span lang="EN-US"&gt;Log&lt;/span&gt;是在&lt;span lang="EN-US"&gt;onLongClick()&lt;/span&gt;方法&lt;span lang="EN-US"&gt;return false&lt;/span&gt;的情况下，一次触碰操作的基本时序：&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;span style="color: #000000;"&gt;&lt;span style="background-color: #ffffff;"&gt;04-05 06:00:53.023: DEBUG/TSActivity(277): onTouch ACTION_DOWN&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;span style="color: #000000;"&gt;&lt;span style="background-color: #ffffff;"&gt;04-05 06:00:53.533: DEBUG/TSActivity(277): onLongClick&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;span style="color: #000000;"&gt;&lt;span style="background-color: #ffffff;"&gt;04-05 06:00:55.603: DEBUG/TSActivity(277): onTouch ACTION_UP&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;span style="color: #000000;"&gt;&lt;span style="background-color: #ffffff;"&gt;04-05 06:00:55.663: DEBUG/TSActivity(277): onClick&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;可以看到，在&lt;span lang="EN-US"&gt;ACTION_UP&lt;/span&gt;后仍然触发了&lt;span lang="EN-US"&gt;onClick()&lt;/span&gt;方法。&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="left"&gt;【引用自&lt;a href="http://blog.csdn.net/ddna/article/details/5451722"&gt;http://blog.csdn.net/ddna/article/details/5451722&lt;/a&gt;】&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/allin/aggbug/2152072.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/allin/archive/2011/08/24/2152072.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/allin/archive/2011/08/08/2131606.html</id><title type="text">bitmap优化</title><summary type="text">直接使用ImageView显示bitmap会占用较多资源，特别是图片较大的时候，可能导致崩溃。使用BitmapFactory.Options设置inSampleSize, 这样做可以减少对系统资源的要求。属性值inSampleSize表示缩略图大小为原始图片大小的几分之一，即如果这个值为2，则取出的缩略图的宽和高都是原始图片的1/2，图片大小就为原始大小的1/4。Options中有个属性inJustDecodeBounds，SDK中是这么说的If set to true, the decoder will return null (no bitmap), but the out... fiel</summary><published>2011-08-08T15:45:00Z</published><updated>2011-08-08T15:45:00Z</updated><author><name>allin.android</name><uri>http://www.cnblogs.com/allin/</uri></author><link rel="alternate" href="http://www.cnblogs.com/allin/archive/2011/08/08/2131606.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/allin/archive/2011/08/08/2131606.html"/><content type="html">&lt;p&gt;直接使用ImageView显示bitmap会占用较多资源，特别是图片较大的时候，可能导致崩溃。&lt;/p&gt;&lt;p&gt;使用BitmapFactory.Options设置inSampleSize, 这样做可以减少对系统资源的要求。&lt;/p&gt;&lt;p&gt;属性值inSampleSize表示缩略图大小为原始图片大小的几分之一，即如果这个值为2，则取出的缩略图的宽和高都是原始图片的1/2，图片大小就为原始大小的1/4。&lt;/p&gt;&lt;p&gt;Options中有个属性inJustDecodeBounds，SDK中是这么说的&lt;/p&gt;&lt;p&gt;If set to true, the decoder will return null (no bitmap), but the out... fields will still be set, allowing the caller to query the bitmap without having to allocate the memory for its pixels.&lt;/p&gt;&lt;p&gt;通过设置inJustDecodeBounds为true，获取到outHeight（图片原始高度）和outWidth（图片的原始宽度），然后计算一个inSampleSize（缩放值）&lt;/p&gt;&lt;p&gt;&lt;em style="line-height: normal;"&gt;&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;main.xml&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;xml version="1.0" encoding="utf-8"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;LinearLayout &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;xmlns:android&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="http://schemas.android.com/apk/res/android"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&lt;br /&gt;android:orientation&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="vertical"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&lt;br /&gt;android:layout_width&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="fill_parent"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&lt;br /&gt;android:layout_height&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="fill_parent"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;TextView&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;android:layout_width&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="fill_parent"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&lt;br /&gt;android:layout_height&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="wrap_content"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&lt;br /&gt;android:text&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="@string/hello"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;ImageView&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;android:id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="@+id/imageview"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&lt;br /&gt;android:layout_gravity&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="center"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&lt;br /&gt;android:layout_width&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="fill_parent"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&lt;br /&gt;android:layout_height&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="fill_parent"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&lt;br /&gt;android:scaleType&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="center"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;LinearLayout&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;java源码&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; android.app.Activity;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; android.graphics.Bitmap;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; android.graphics.BitmapFactory;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; android.os.Bundle;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; android.widget.ImageView;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; android.widget.Toast;&lt;br /&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; AndroidImage &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;extends&lt;/span&gt;&lt;span style="color: #000000;"&gt; Activity {&lt;br /&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; String imageFile &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;/sdcard/AndroidSharedPreferencesEditor.png&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;/**&lt;/span&gt;&lt;span style="color: #008000;"&gt; Called when the activity is first created. &lt;/span&gt;&lt;span style="color: #008000;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt; &lt;br /&gt;@Override&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; onCreate(Bundle savedInstanceState) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;super&lt;/span&gt;&lt;span style="color: #000000;"&gt;.onCreate(savedInstanceState);&lt;br /&gt;setContentView(R.layout.main);&lt;br /&gt;   &lt;br /&gt;ImageView myImageView &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (ImageView)findViewById(R.id.imageview);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;Bitmap bitmap = BitmapFactory.decodeFile(imageFile);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;myImageView.setImageBitmap(bitmap);&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br /&gt;Bitmap bitmap;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;float&lt;/span&gt;&lt;span style="color: #000000;"&gt; imagew &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;300&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;float&lt;/span&gt;&lt;span style="color: #000000;"&gt; imageh &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;300&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt; &lt;br /&gt;BitmapFactory.Options bitmapFactoryOptions &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; BitmapFactory.Options();&lt;br /&gt;bitmapFactoryOptions.inJustDecodeBounds &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;bitmap &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; BitmapFactory.decodeFile(imageFile, bitmapFactoryOptions);&lt;br /&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; yRatio &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;)Math.ceil(bitmapFactoryOptions.outHeight&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;imageh);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; xRatio &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;)Math.ceil(bitmapFactoryOptions.outWidth&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;imagew);&lt;br /&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (yRatio &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;||&lt;/span&gt;&lt;span style="color: #000000;"&gt; xRatio &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;){&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (yRatio &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; xRatio) {&lt;br /&gt;  bitmapFactoryOptions.inSampleSize &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; yRatio;&lt;br /&gt;  Toast.makeText(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;yRatio = &lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; String.valueOf(yRatio),&lt;br /&gt;    Toast.LENGTH_LONG).show();&lt;br /&gt; }&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; {&lt;br /&gt;  bitmapFactoryOptions.inSampleSize &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; xRatio;&lt;br /&gt;  Toast.makeText(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;xRatio = &lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; String.valueOf(xRatio),&lt;br /&gt;    Toast.LENGTH_LONG).show();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt;{&lt;br /&gt; Toast.makeText(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;br /&gt;   &lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;inSampleSize = 1&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;br /&gt;   Toast.LENGTH_LONG).show();&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;bitmapFactoryOptions.inJustDecodeBounds &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;bitmap &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; BitmapFactory.decodeFile(imageFile, bitmapFactoryOptions);&lt;br /&gt;myImageView.setImageBitmap(bitmap);&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/allin/aggbug/2131606.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/allin/archive/2011/08/08/2131606.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/allin/archive/2011/08/03/2125975.html</id><title type="text">《球迷》</title><summary type="text">查看最新足球赛事预告， 定制比赛提醒任务， 及时更新关注球赛比分， 掌握最新的体育资讯， 是球迷必备的工具下载地址：</summary><published>2011-08-03T03:23:00Z</published><updated>2011-08-03T03:23:00Z</updated><author><name>allin.android</name><uri>http://www.cnblogs.com/allin/</uri></author><link rel="alternate" href="http://www.cnblogs.com/allin/archive/2011/08/03/2125975.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/allin/archive/2011/08/03/2125975.html"/><content type="html">&lt;p&gt;查看最新足球赛事预告， 定制比赛提醒任务， 及时更新关注球赛比分， 掌握最新的体育资讯， 是球迷必备的工具&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/130995/2011080311152864.jpg" width="288" height="480" /&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/130995/2011080311161630.jpg" width="288" height="480" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/130995/2011080311174343.jpg" width="288" height="480" /&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/130995/2011080311184089.jpg" width="288" height="480" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/130995/2011080311185637.jpg" width="288" height="480" /&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/130995/2011080311191391.jpg" width="288" height="480" /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;下载地址：&lt;/p&gt;&lt;p&gt;&lt;img src="http://www.nduoa.com/apk/62/62782/62782-qr.png" alt="二维码" /&gt; &lt;!--En--&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;!--En--&gt;&lt;img src="http://www.cnblogs.com/allin/aggbug/2125975.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/allin/archive/2011/08/03/2125975.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/allin/archive/2011/05/17/2048637.html</id><title type="text">《茶》</title><summary type="text">茶的香味，她会帮你记住。茶的故事，她会说给你听。茶的资讯，她会与你分享。如果你喜欢茶，就拥有她吧。下载：</summary><published>2011-05-17T03:12:00Z</published><updated>2011-05-17T03:12:00Z</updated><author><name>allin.android</name><uri>http://www.cnblogs.com/allin/</uri></author><link rel="alternate" href="http://www.cnblogs.com/allin/archive/2011/05/17/2048637.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/allin/archive/2011/05/17/2048637.html"/><content type="html">&lt;p&gt;茶的香味，她会帮你记住。&lt;/p&gt;&lt;p&gt;茶的故事，她会说给你听。&lt;/p&gt;&lt;p&gt;茶的资讯，她会与你分享。&lt;/p&gt;&lt;p&gt;如果你喜欢茶，就拥有她吧。&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/130995/2011051711063051.png" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/130995/2011051711064047.png" width="192" height="320" /&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2011/130995/2011051711071876.png" width="192" height="320" /&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2011/130995/2011051711075053.png" width="192" height="320" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/130995/2011051711084555.png" width="192" height="320" /&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2011/130995/2011051711090782.png" width="192" height="320" /&gt;&lt;/p&gt;&lt;p&gt;下载：&lt;/p&gt;&lt;p&gt;&lt;img src="http://www.nduoa.com/apk/63/63552/63552-qr.png" alt="二维码" /&gt; &lt;!--En--&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/allin/aggbug/2048637.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/allin/archive/2011/05/17/2048637.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/allin/archive/2011/05/10/2042079.html</id><title type="text">各种款式的别致的 Android 体恤衫</title><summary type="text">印有 Android 形象的体恤衫应该会深受 Android 迷们的大爱吧？而且现在正进入炎热的夏季，这样的体恤衫不仅穿着舒服凉爽而且还非常酷。看看这些图案吧，各种各样应有尽有，而且甚至于 Android 机器人还被 Hello Kitty 了…各种各样甚至是你前所未闻的。有兴趣的读者可以到RedBubble网站看看，23.94 刀（大约 155 元天朝币）就可以搞到一件这样的体恤衫（另外动手能力强的话貌似可以下载该网站上的图案将其矢量化，然后放大了自己印去…山寨一件貌似也不错）</summary><published>2011-05-10T05:43:00Z</published><updated>2011-05-10T05:43:00Z</updated><author><name>allin.android</name><uri>http://www.cnblogs.com/allin/</uri></author><link rel="alternate" href="http://www.cnblogs.com/allin/archive/2011/05/10/2042079.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/allin/archive/2011/05/10/2042079.html"/><content type="html">&lt;p&gt;&lt;img class="aligncenter size-large wp-image-12209" title="Android_Robot_01" src="http://android.guao.hk/wp-content/uploads/2011/05/Android_Robot_01-550x751.jpg" width="550" height="751" /&gt;&lt;/p&gt;&lt;p&gt;印有 Android 形象的体恤衫应该会深受 Android 迷们的大爱吧？而且现在正进入炎热的夏季，这样的体恤衫不仅穿着舒服凉爽而且还非常酷。&lt;/p&gt;&lt;p&gt;&lt;img class="aligncenter size-large wp-image-12214" title="Android_Robot_06" src="http://android.guao.hk/wp-content/uploads/2011/05/Android_Robot_06-550x346.jpg" width="550" height="346" /&gt;&lt;/p&gt;&lt;p&gt;看看这些图案吧，各种各样应有尽有，而且甚至于 Android 机器人还被 Hello Kitty 了&amp;hellip;各种各样甚至是你前所未闻的。&lt;/p&gt;&lt;p&gt;有兴趣的读者可以到&amp;nbsp;&lt;a href="http://www.redbubble.com/explore/droidarmy" target="_blank"&gt;RedBubble&lt;/a&gt;&amp;nbsp;网站看看，23.94 刀（大约 155 元天朝币）就可以搞到一件这样的体恤衫（另外动手能力强的话貌似可以下载该网站上的图案将其矢量化，然后放大了自己印去&amp;hellip;山寨一件貌似也不错）&lt;/p&gt;&lt;div id="gallery-1" class="gallery galleryid-12207 gallery-columns-3 gallery-size-thumbnail"&gt;&lt;dl class="gallery-item"&gt;&lt;dt class="gallery-icon"&gt;&lt;a href="http://android.guao.hk/wp-content/uploads/2011/05/Android_Robot_01.jpg" title="Android_Robot_01" class="cboxElement"&gt;&lt;img width="150" height="150" src="http://android.guao.hk/wp-content/uploads/2011/05/Android_Robot_01-150x150.jpg" class="attachment-thumbnail" alt="Android_Robot_01" title="Android_Robot_01" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://android.guao.hk/wp-content/uploads/2011/05/Android_Robot_02.jpg" title="Android_Robot_02" class="cboxElement"&gt;&lt;img width="150" height="150" src="http://android.guao.hk/wp-content/uploads/2011/05/Android_Robot_02-150x150.jpg" class="attachment-thumbnail" alt="Android_Robot_02" title="Android_Robot_02" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://android.guao.hk/wp-content/uploads/2011/05/Android_Robot_03.jpg" title="Android_Robot_03" class="cboxElement"&gt;&lt;img width="150" height="150" src="http://android.guao.hk/wp-content/uploads/2011/05/Android_Robot_03-150x150.jpg" class="attachment-thumbnail" alt="Android_Robot_03" title="Android_Robot_03" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/dt&gt;&lt;dt class="gallery-icon"&gt;&lt;a href="http://android.guao.hk/wp-content/uploads/2011/05/Android_Robot_04.jpg" title="Android_Robot_04" class="cboxElement"&gt;&lt;img width="150" height="150" src="http://android.guao.hk/wp-content/uploads/2011/05/Android_Robot_04-150x150.jpg" class="attachment-thumbnail" alt="Android_Robot_04" title="Android_Robot_04" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://android.guao.hk/wp-content/uploads/2011/05/Android_Robot_05.jpg" title="Android_Robot_05" class="cboxElement"&gt;&lt;img width="150" height="150" src="http://android.guao.hk/wp-content/uploads/2011/05/Android_Robot_05-150x150.jpg" class="attachment-thumbnail" alt="Android_Robot_05" title="Android_Robot_05" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://android.guao.hk/wp-content/uploads/2011/05/Android_Robot_06.jpg" title="Android_Robot_06" class="cboxElement"&gt;&lt;img width="150" height="150" src="http://android.guao.hk/wp-content/uploads/2011/05/Android_Robot_06-150x150.jpg" class="attachment-thumbnail" alt="Android_Robot_06" title="Android_Robot_06" /&gt;&lt;/a&gt;&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/allin/aggbug/2042079.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/allin/archive/2011/05/10/2042079.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/allin/archive/2011/04/29/2033133.html</id><title type="text">塔防游戏《android防御战》更新到v1.2</title><summary type="text">这段时间一直在学习andenginer，并开发了一款塔防游戏《android防御战》，算是能学以致用 ：）下面是对游戏的介绍，有兴趣的朋友可以下来玩玩看</summary><published>2011-04-29T13:51:00Z</published><updated>2011-04-29T13:51:00Z</updated><author><name>allin.android</name><uri>http://www.cnblogs.com/allin/</uri></author><link rel="alternate" href="http://www.cnblogs.com/allin/archive/2011/04/29/2033133.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/allin/archive/2011/04/29/2033133.html"/><content type="html">&lt;p&gt;这段时间一直在学习andengine，并开发了一款塔防游戏《android防御战》，&lt;/p&gt;&lt;p&gt;算是能学以致用 ：）&lt;/p&gt;&lt;p&gt;下面是对游戏的介绍，有兴趣的朋友可以下来玩玩看&lt;/p&gt;&lt;p&gt;下载：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/130995/2011091415211015.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;Android世界正遭受来自不同种族敌人的侵扰，你要借助android魔法塔的力量来设置防御设施，抵御敌人的入侵。&lt;/p&gt;&lt;p&gt;游戏采用传统的塔防玩法，包括6大场景，7种魔法塔，12个有趣的关卡。你可以购买不同类型的魔法塔，并决定他们的摆放的位置，升级顺序等.&lt;br /&gt;7种魔法塔有不同的属性和攻击范围以及能力。&lt;br /&gt;在游戏中你可以进行长时间的挑战，6个不同的场景各具特色，变化无穷的策略将由你尽情发挥。游戏中会随机出现金币，钻石，生命能量等物品，记得捡哦。&lt;br /&gt;总体来说这是一款紧张激烈的塔防类游戏，很值得一试。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; background-position: initial initial; background-repeat: initial initial; border-width: 0px; padding: 0px;"&gt;[1.2]更新：&lt;/strong&gt;&lt;/p&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 15px; padding-top: 5px; padding-right: 0px; padding-bottom: 5px; padding-left: 10px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; list-style-type: disc; list-style-position: initial; list-style-image: initial; background-position: initial initial; background-repeat: initial initial; border-width: 0px;"&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px;"&gt;每个关卡增加了 Boss 通关模式，提高游戏耐玩度；&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px;"&gt;支持大屏幕显示；&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px;"&gt;提高图片显示精细度。&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px;"&gt;&lt;/strong&gt;&lt;/p&gt;&lt;h3 style="font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px;"&gt;[1.1]更新：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="color: #444444; font-family: arial, sans-serif; font-size: 12px; line-height: 20px;"&gt;&lt;/span&gt;添加了6幅地图&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/130995/2011042921361296.jpg" width="600" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/130995/2011042921373337.jpg" width="600" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/130995/2011042921382565.jpg" width="600" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/130995/2011042921394239.jpg" width="600" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/130995/2011042921401520.jpg" width="600" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/allin/aggbug/2033133.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/allin/archive/2011/04/29/2033133.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/allin/archive/2011/03/17/1987485.html</id><title type="text">获取屏幕硬件分辨率方法</title><summary type="text">TextView tv=(TextView)findViewById(R.id.tv); DisplayMetrics dm=new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); float width=dm.widthPixels*dm.density; float height=dm.heightPixels*dm.density; tv.setText(width+"X"+height);其中dm.withPixels和dm.heightPixels得到的宽度和高度值都</summary><published>2011-03-17T13:56:00Z</published><updated>2011-03-17T13:56:00Z</updated><author><name>allin.android</name><uri>http://www.cnblogs.com/allin/</uri></author><link rel="alternate" href="http://www.cnblogs.com/allin/archive/2011/03/17/1987485.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/allin/archive/2011/03/17/1987485.html"/><content type="html">&lt;div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;       TextView tv=(TextView)findViewById(R.id.tv);&lt;br/&gt;        DisplayMetrics dm=new DisplayMetrics();&lt;br/&gt;        getWindowManager().getDefaultDisplay().getMetrics(dm);&lt;br/&gt;        float width=dm.widthPixels*dm.density;&lt;br/&gt;        float height=dm.heightPixels*dm.density;&lt;br/&gt;        tv.setText(width+"X"+height);&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;其中dm.withPixels和dm.heightPixels得到的宽度和高度值都是以宽度为320为标准的，也就是说，不管你的屏幕是什么分辨率，宽度都会得到320,而高度就根据比例宽高比例计算，&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;所以在Milestone上(480X854)得到的宽高为320X569，如果要得到真实的分辨率，就必须乘以dm.density,&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;这个值是因硬件分辨率而异的，如果是屏幕硬件宽为320像素，那么这个值就是1,&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;如果是480,这个值就是480/320,就是1.5。&lt;/div&gt;&lt;img src="http://www.cnblogs.com/allin/aggbug/1987485.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/allin/archive/2011/03/17/1987485.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
