标签:android des style blog http color
Activity类: | Activity | dispatchTouchEvent(); onTouchEvent(); |
View容器(ViewGroup的子类): | FrameLayout、LinearLayout…… ListView、ScrollVIew…… |
dispatchTouchEvent(); onInterceptTouchEvent(); onTouchEvent(); |
View控件(非ViewGroup子类): | Button、TextView、EditText…… | dispatchTouchEvent(); onTouchEvent(); |
dispatchTouchEvent() | 用来分派事件。 其中调用了onInterceptTouchEvent()和onTouchEvent(),一般不重写该方法 |
onInterceptTouchEvent() | 用来拦截事件。 ViewGroup类中的源码实现就是{return false;}表示不拦截该事件, 事件将向下传递(传递给其子View); 若手动重写该方法,使其返回true则表示拦截,事件将终止向下传递, 事件由当前ViewGroup类来处理,就是调用该类的onTouchEvent()方法 |
onTouchEvent() | 用来处理事件。 返回true则表示该View能处理该事件,事件将终止向上传递(传递给其父View); 返回false表示不能处理,则把事件传递给其父View的onTouchEvent()方法来处理 |
1 public class MyActivity extends Activity { 2 3 @Override 4 public void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.main); 7 } 8 9 @Override 10 public boolean dispatchTouchEvent(MotionEvent ev) { 11 Log.d("d", "【总统】任务<" + Util.actionToString(ev.getAction()) + "> : 需要分派"); 12 return super.dispatchTouchEvent(ev); 13 } 14 15 @Override 16 public boolean onTouchEvent(MotionEvent ev) { 17 boolean bo = false; 18 Log.d("d", "【总统】任务<" + Util.actionToString(ev.getAction()) + "> : 下面都解决不了,下次再也不能靠你们了,哼…只能自己尝试一下啦。能解决?" + bo); 19 return bo; 20 } 21 }
1 public class MyFrameLayout extends FrameLayout 2 { 3 public MyFrameLayout(Context context, AttributeSet attrs){ 4 super(context, attrs); 5 } 6 7 @Override 8 public boolean dispatchTouchEvent(MotionEvent ev) { 9 Log.d("d", "【省长】任务<" + Util.actionToString(ev.getAction()) + "> : 需要分派"); 10 return super.dispatchTouchEvent(ev); 11 } 12 13 @Override 14 public boolean onInterceptTouchEvent(MotionEvent ev) { 15 boolean bo = false; 16 Log.d("d", "【省长】任务<" + Util.actionToString(ev.getAction()) + "> : 拦截吗?" + bo); 17 return bo; 18 } 19 20 @Override 21 public boolean onTouchEvent(MotionEvent ev) { 22 boolean bo = false; 23 Log.d("d", "【省长】任务<" + Util.actionToString(ev.getAction()) + "> : 市长是个废物,下次再也不找你了,我自己来尝试一下。能解决?" + bo); 24 return bo; 25 } 26 }
1 public class MyLinearLayout extends LinearLayout{ 2 3 public MyLinearLayout(Context context, AttributeSet attrs) { 4 super(context, attrs); 5 } 6 7 @Override 8 public boolean dispatchTouchEvent(MotionEvent ev) { 9 Log.d("d", "【市长】任务<" + Util.actionToString(ev.getAction()) + "> : 需要分派"); 10 return super.dispatchTouchEvent(ev); 11 } 12 13 @Override 14 public boolean onInterceptTouchEvent(MotionEvent ev) { 15 boolean bo = false; 16 Log.d("d", "【市长】任务<" + Util.actionToString(ev.getAction()) + "> : 拦截吗?" + bo); 17 return bo; 18 } 19 20 @Override 21 public boolean onTouchEvent(MotionEvent ev) { 22 boolean bo = false; 23 Log.d("d", "【市长】任务<" + Util.actionToString(ev.getAction()) + "> : 农民真没用,下次再也不找你了,我自己来尝试一下。能解决?" + bo); 24 return bo; 25 } 26 }
1 public class MyTextView extends TextView 2 { 3 public MyTextView(Context context, AttributeSet attrs){ 4 super(context, attrs); 5 } 6 7 @Override 8 public boolean dispatchTouchEvent(MotionEvent ev){ 9 Log.d("d", "【农民】任务<" + Util.actionToString(ev.getAction()) + "> : 需要分派,我下面没人了,怎么办?自己干吧"); 10 return super.dispatchTouchEvent(ev); 11 } 12 13 @Override 14 public boolean onTouchEvent(MotionEvent ev){ 15 boolean bo = true; 16 Log.d("d", "【农民】任务<" + Util.actionToString(ev.getAction()) + "> : 自己动手,埋头苦干。能解决?" + bo); 17 return bo; 18 } 19 }
原文地址:http://blog.csdn.net/morgan_xww/article/details/9372285
【转】Android TouchEvent事件传递机制,布布扣,bubuko.com
标签:android des style blog http color
原文地址:http://www.cnblogs.com/liangstudyhome/p/3798638.html