¿Encuentra el uso de canvas.drawPicture(p); en Android? ¿Busca un ejemplo sencillo?
Este ejemplo puede ser un poco más complicado, pero es muy útil:
public?class?MainActivity?extends?Activity?{
DrawingView?dv ?;
p>
privado?PaintmPaint;
¿Privado? p>p>privado?DrawingManager?mDrawingManager=null;
@Override p>
¿protegido?void?onCreate(Bundle?savedInstanceState)?Establecer color (Color.GREEN);
mPaint.setStyle (Paint.Style.STROKE);
mPaint .setStrokeJoin (Paint.Join.ROUND) ;
mPaint.setStrokeCap(Paint.Cap.ROUND);
mPaint.setStrokeWidth(12);?
} público?
privado?Canvas?mCanvas;
privado?PathmPath;
privado?PaintmBitmapPaint;
Contexto?context;
¿privado?Paint ?circlePaint;
¿privado?Path?circlePath;
público?DrawingView(Context?c)?{
super (c);
context=c;
mPath?=?new?Path();
mBitmapPaint?=?new?Paint(Paint.DITHER_FLAG );?
circlePaint?=?new?Paint();
circlePath?=?new?Path();
circlePaint.setAntiAlias(true) ;
circlePaint .setColor( color.
circlePaint.setStyle(Paint.Style.STROKE);
circlePaint.setStrokeJoin(Paint.Join.MITER);
circlePaint.setStrokeWidth(4f); ?
}
@Override protected?{
super.onSizeChanged(w,?h,?oldw,?oldh);
mBitmap?ARGB_8888);
mCanvas?=?new?Canvas(mBitmap);
}
@Override
¿protegido? void?onDraw(Canvas?canvas)?canvas.drawPath(?circlePath,?circlePaint);
}
privado?float?mX,?mY;
privado?static?final?float?TOUCH_TOLERANCE?=?4;
privado?void?touch_start(float?x, ?float?y)?{
mPath.reset( );
mPath.moveTo(x,?y);
mX?=?x;
mY?=?y;
}
¿privado?{
float?dx?=?Math.abs(x?-?mX);
float?dy?=? Math.abs(y?-?mY);
if(dx?gt;=?TOUCH_TOLERANCE?|?dy?gt;=?TOUCH_TOLERANCE)?TOLERANCE)?{ mPath.quadTo(mX,? mY, ? (x? ?mX)/2, ? (y? ?mY)/2);
mX?=?x;
mY?=?y;
circlePath.reset()?reset();
circlePath.addCircle(mX,?mY,?30,?Path.Direction.CW);
}
}
¿privado?{
mPath.lineTo(mX,?mY);
circlePath.reset();
//?Para que no dibujemos repetidamente
mPath.reset();
}
@Override
public ? boolean?onTouchEvent (¿MotionEvent?event)?{
float?x?=?event.getX();
float?y?=?event.getY();
p>
¿cambiar?(event.getAction())?{
caso?ACTION_MOVE ACTION_MOVE:
touch_move(x,?y);
invalidar();
romper;
caso?MotionEvent.ACTION_UP:
touch_up();
inval
fechar().
romper;
}
regresar?verdadero;
}?
} }
El lienzo se dibuja dondequiera que vaya tu dedo. Imagen: