android学习10#–基于监听的事件处理里面讲了android的事件处理有三种方法,本文主要分享和学习第二种方法:基于回调的事件处理。
基于回调的事件处理
对于基于回调的处理模型来说,事件源个事件监听器是统一的,或者说事件监听器完全消失了。具体点就是当用户再组件上激发某个事件是,组件自己特定的方法将会负责处理该事件。对于开发人员来讲,其实工作任务就是编写继承组件的类,并重写该类的事件处理方法。
仔细想想前面所学习的自定义view,所采用的不正是这个处理模型。
看实例:跟随手指的小球
自定义view:
public class BallView extends View {
public float nCurX, nCurY;
public Paint mPaint;
public BallView(Context context) {
super(context);
}
public BallView(Context context, AttributeSet set) {
super(context, set, 0);
}
public BallView(Context context, AttributeSet set, int defStyleAttr) {
super(context, set, defStyleAttr);
}
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
mPaint = new Paint();
mPaint.setColor(Color.RED);
canvas.drawCircle(nCurX, nCurY, 30, mPaint);
}
public boolean onTouchEvent(MotionEvent event) {
nCurX = event.getX();
nCurY = event.getY();
invalidate();
return true;
}
}
记住自定义view的三个回调哦,不清楚先参考我的另一篇文章:android学习8#–自定义View之view类简单分析 。
效果图: