public class MultiLineView extends View {
private List
public MultiLineView(Context context) {
super(context);
init();
}
public MultiLineView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
linePaint.setColor(Color.BLACK);
linePaint.setStrokeWidth(5);
linePaint.setStyle(Paint.Style.STROKE);
linePaint.setAntiAlias(true);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (pointsList.size() >= 2) {
Path path = new Path();
for (int i = 1; i < pointsList.size(); i++) {
path.moveTo(pointsList.get(i - 1).x, pointsList.get(i - 1).y);
path.lineTo(pointsList.get(i).x, pointsList.get(i).y);
}
canvas.drawPath(path, linePaint);
}
}
public void addLine(PointF startPoint, PointF endPoint) {
pointsList.add(startPoint);
pointsList.add(endPoint);
invalidate(); // 重绘
}
public void clearLines() {
pointsList.clear();
invalidate(); // 重绘
}
}
MultiLineView multiLineView = findViewById(R.id.multi_line_view); multiLineView.addLine(new PointF(100, 100), new PointF(200, 200)); multiLineView.addLine(new PointF(200, 200), new PointF(200, 300));
注意:在activity中绘制前需要先保证自定义View的onDraw方法被调用,可以通过在
上一篇:AndroidStudio、Desktop.ini、文件名必须以.xml或.png结尾。
下一篇:AndroidStudio(版本Electriceel)中出现“FatalErroractivity-1.6.0.pom:2:1:Contentisnotallowedinprolog”的错误。