android 的事件机制
原文在这 http://blog.csdn.net/morgan_xww/article/details/9372285/
自己写的touch
package com.weidingqiang.testviewb; import android.content.Context; import android.graphics.Canvas; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.View; /** * Created by weidingqiang on 15/11/20. */ public class TouchView extends View { private static final String TAG = TouchView.class.getSimpleName(); public TouchView(Context context) { super(context); } public TouchView(Context context, AttributeSet attrs) { super(context, attrs); } public TouchView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } private int oldx,oldy; @Override public boolean onTouchEvent(MotionEvent event) { //以父类为0,0 点 int in_parentx = (int)event.getX(); int in_parenty = (int) event.getY(); //以 屏幕为 0,0 int in_screen_x = (int) event.getRawX(); int in_screen_y = (int) event.getRawY(); switch (event.getAction()){ case MotionEvent.ACTION_DOWN: oldx = in_parentx; oldy = in_parenty; Log.d(TAG,">>>>>>ACTION_DOWN>>>>>> x "+in_parentx+" y "+in_parenty); break; case MotionEvent.ACTION_MOVE: int dis_x = in_parentx-oldx; int dis_y = in_parenty-oldy; Log.d(TAG,">>>>>>ACTION_MOVE>>>>>> x "+dis_x+" y "+dis_y); break; case MotionEvent.ACTION_UP: int dis_x_up = in_parentx-oldx; int dis_y_up = in_parenty-oldy; Log.d(TAG,">>>>>>ACTION_UP>>>>>> x "+dis_x_up+" y "+dis_y_up); break; } //需要修改为 true 否则只能监听到 down 事件 return true; } }
跟touch事件相关的3个方法:
public boolean dispatchTouchEvent(MotionEvent ev); //用来分派event
public boolean onInterceptTouchEvent(MotionEvent ev); //用来拦截event
public boolean onTouchEvent(MotionEvent ev); //用来处理event
流程图
人的一生能做好一件事就阿弥陀佛了

浙公网安备 33010602011771号