一、首先自定义一个画板控件
/**
* @描述 画板view
* @项目名称 App_Basic
* @包名 com.example.basic.canvas
* @类名 CanvasView
* @author chenlin
* @date 2013年5月17日 下午9:57:25
* @version 1.0
*/
public class CanvasView extends View {
//private static final int VIEW_WIDTH = 320;
//private static final int VIEW_HEIGHT = 480;
//控件的宽高
private int mWidth;
private int mHeight;
private Path mPath;//路径
public Paint mPaint;//画笔
private Bitmap mCacheBitmap;//缓存图片
private Canvas mCanvas;//画布
public CanvasView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public CanvasView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public CanvasView(Context context) {
super(context);
init();
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
mWidth = w;
mHeight = h;
super.onSizeChanged(w, h, oldw, oldh);
}
private void init() {
mCanvas = new Canvas();
mPath = new Path();
mPaint = new Paint(Paint.DITHER_FLAG);
mPaint.setColor(Color.RED);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeWidth(2);
mPaint.setAntiAlias(true);
mPaint.setDither(true);
}
private float preX;
private float preY;
@Override
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX();
float y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mPath.moveTo(x, y);
preX = x;
preY = y;
break;
case MotionEvent.ACTION_MOVE:
mPath.quadTo(preX, preY, x, y);
preX = x;
preY = y;
break;
case MotionEvent.ACTION_UP:
mCanvas.drawPath(mPath, mPaint);
//mPath.reset();
break;
}
invalidate();
return true;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
mCacheBitmap = Bitmap.createBitmap(mWidth, mHeight, Config.ARGB_8888);
mCanvas.setBitmap(mCacheBitmap);
canvas.drawBitmap(mCacheBitmap, 0, 0, null);
canvas.drawPath(mPath, mPaint);
}
}
二、创建Activity实现
/**
* @描述 画板
* @项目名称 App_Basic
* @包名 com.example.basic.canvas
* @类名 CanvasActivity
* @author chenlin
* @date 2013年5月17日 下午10:17:13
* @version 1.0
*/
public class CanvasActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// 设置为无标题
requestWindowFeature(Window.FEATURE_NO_TITLE);
// 设置为全屏模式
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
CanvasView view = new CanvasView(this);
LayoutParams layoutParams = new ViewGroup.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
view.setLayoutParams(layoutParams);
setContentView(view);
}
}