0
点赞
收藏
分享

微信扫一扫

Android 实现简单画板二


一、首先自定义一个画板控件

/**
* @描述 画板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);
}
}

举报

相关推荐

0 条评论