Android学习07-事件处理(四)键盘事件和触摸事件

Android学习07-----事件处理(4)键盘事件和触摸事件?Activity:Activity:?Activity:package com.iflytek.act

Android学习07-----事件处理(4)键盘事件和触摸事件

?

Activity:

Activity:

Activity:

package com.iflytek.activity;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Point;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;/** * @author xdwang *  * @create 2012-9-3 下午9:46:43 *  * @email:xdwangiflytek@gmail.com *  * @description *  */public class MyPaintView extends View {private List<Point> allPoint = new ArrayList<Point>(); // 保存所有的操作坐标public MyPaintView(Context context, AttributeSet attrs) { // 接收Context,同时接收属性集合super(context, attrs); // 调用父类的构造super.setOnTouchListener(new OnTouchListenerImpl());}private class OnTouchListenerImpl implements OnTouchListener {public boolean onTouch(View v, MotionEvent event) {Point p = new Point((int) event.getX(), (int) event.getY()); // 将坐标保存在Point类if (event.getAction() == MotionEvent.ACTION_DOWN) { // 按下,表示重新开始保存点MyPaintView.this.allPoint = new ArrayList<Point>(); // 重绘MyPaintView.this.allPoint.add(p); // 保存点} else if (event.getAction() == MotionEvent.ACTION_UP) { // 用户松开MyPaintView.this.allPoint.add(p); // 记录坐标点MyPaintView.this.postInvalidate(); // 重绘图形} else if (event.getAction() == MotionEvent.ACTION_MOVE) { // 用户移动MyPaintView.this.allPoint.add(p); // 记录坐标点MyPaintView.this.postInvalidate(); // 重绘图形}return true; // 表示下面的操作不再执行了。}}@Overrideprotected void onDraw(Canvas canvas) { // 进行绘图Paint p = new Paint(); // 依靠此类开始画线p.setColor(Color.RED);// 定义图的颜色if (MyPaintView.this.allPoint.size() > 1) { // 现在有坐标点保存的时候可以开始进行绘图Iterator<Point> iter = MyPaintView.this.allPoint.iterator();Point first = null;Point last = null;while (iter.hasNext()) {if (first == null) {first = (Point) iter.next(); // 取出坐标} else {if (last != null) { // 前一阶段已经完成了first = last; // 重新开始下一阶段}last = (Point) iter.next(); // 结束点坐标canvas.drawLine(first.x, first.y, last.x, last.y, p);}}}}}

?