我试图画一个箭头,但结果却很奇怪。
This is how it looks like ,问题很明显-重叠部分。

int radius = 100;  //Radius of blue circle to the right
Path leftArrow = new Path();
Paint leftArrowPaint = new Paint(Paint.ANTI_ALIAS_FLAG);

leftArrowPaint.setStyle(Paint.Style.STROKE);
leftArrowPaint.setColor(ContextCompat.getColor(getContext(), R.color.buttonText));
leftArrowPaint.setAlpha(80);
leftArrowPaint.setStrokeWidth(8);


在onDraw方法中:

//Start point
leftArrow.moveTo(touchX-(radius+5),  (int)touchY);
//Line to left
leftArrow.lineTo(touchX-(radius+60), (int)touchY);
//Line up
leftArrow.lineTo(touchX-(radius+30), (int)touchY-30);
//Move back to the middle
leftArrow.moveTo(touchX-(radius+60), (int)touchY);
//Line down
leftArrow.lineTo(touchX-(radius+30), (int)touchY+30);
canvas.drawPath(leftArrow, leftArrowPaint);
leftArrow.reset();

最佳答案

好的,我知道这对您来说太迟了,但是无论如何,如果有人遇到相同的问题,我还是要回答。

您需要指定Paint的Join属性。
https://developer.android.com/reference/android/graphics/Paint.Join.html

leftArrowPaint.setStrokeJoin(Paint.Join.BEVEL);


您也可以使用Paint.Join.ROUND,具体取决于哪个更适合您。

10-08 17:56