android画版

public class FingureCanvas extends View {


private Bitmap bitmap;
private Path path;
private float current_x;
private float current_y;
private Paint paint;
private static final int TOUCH_DISTANCE = 10;

public FingureCanvas(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}


public FingureCanvas(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
init();   
}   

private void init(){
bitmap = Bitmap.createBitmap(320, 480, Config.RGB_565);
paint = new Paint();
paint.setStyle(Style.STROKE);
paint.setColor(Color.RED);
paint.setStrokeJoin(Join.ROUND);
paint.setStrokeCap(Cap.ROUND);
paint.setStrokeWidth(5);
}


public FingureCanvas(Context context) {
super(context);
// TODO Auto-generated constructor stub
}

@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
if(path != null){
canvas.drawPath(path, paint);
}
}

@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
onStart(event.getX(), event.getY());
break;
case MotionEvent.ACTION_MOVE:
onMove(event.getX(), event.getY());
invalidate();
break;
case MotionEvent.ACTION_UP:
path.lineTo(current_x, current_y);
invalidate();
break;
}
return super.onTouchEvent(event);
}

private void onMove(float x,float y){
int distance_x  = Math.abs((int)(x - current_x));
int distance_y = Math.abs((int)(y - current_y));
if(distance_x < TOUCH_DISTANCE && distance_y < TOUCH_DISTANCE){
return;
}
path.quadTo(current_x, current_y, (x + current_x) / 2, (y + current_y) / 2);
current_x = x;
current_y = y;        
}
   
private void onStart(float x,float y){
path = new Path();
current_x = x;   
current_y = y;
path.moveTo(current_x, current_y);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值