Я новичок в Android, я учился рисовать на холсте. Как я могу добавлять новые точки в Path и динамически их рисовать? Прямо сейчас я вызываю функцию (setPoints ()) моего пользовательского класса представления из MainActivity и передаю ей точки, но путь не отображается. Кто-нибудь может предложить правильный способ или помочь мне с этим? Я застрял на этом.
public class RenderPointsMap extends View {
public int width;
public int height;
private Bitmap mBitmap;
private Canvas mCanvas;
private Path mPath;
Context context;
private Paint mPaint;
private float mX, mY;
private static final float TOLERANCE = 5;
Vector<PointF> temp = new Vector<>();
PointF usethis = new PointF();
public RenderPointsMap(Context c, AttributeSet attrs) {
super(c, attrs);
context = c;
// we set a new Path
mPath = new Path();
// and we set a new Paint with the desired attributes
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setColor(Color.BLACK);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeJoin(Paint.Join.ROUND);
mPaint.setStrokeWidth(2f);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
// your Canvas will draw onto the defined Bitmap
mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
mCanvas = new Canvas(mBitmap);
}
// override onDraw
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// draw the mPath with the mPaint on the canvas when onDraw
mCanvas = canvas;
canvas.drawPath(mPath, mPaint);
}
public void setPoints(Vector<PointF> points){
mPath.moveTo(200, 200);
for(int i=1;i<points.size();i++)
mPath.lineTo(points.get(i).x, points.get(i).y);
Toast.makeText(getContext(), "Points are set", Toast.LENGTH_SHORT).show();
}
}