Como desenhar uma ponta de seta (no Android)?
Sou bastante novo no Android e ando brincando com o Canvas. Estou tentando desenhar uma flecha, mas só estou tendo sorte em desenhar o eixo, nenhuma ponta da flecha está funcionand
Pesquisei um pouco e encontrei um exemplo de Java, mas o Android não temGeneralPath
ouAffineTransform
.
gora, meu código se parece com o seguinte (a ponta da seta não se parece em nada com uma ponta da seta):
public class DrawableView extends View {
Context mContext;
private int centerX;
private int centerY;
private int radius;
private double arrLength;
private double arrHeading;
private int margin = 10;
public DrawableView(Context context) {
super(context);
mContext = context;
}
@Override
protected void onDraw(Canvas canvas) {
//Paint Background
Paint background = new Paint();
background.setColor(getResources().getColor(R.color.background);
canvas.drawRect(0, 0, getWidth(), getHeight(), background);
//Set vars for Arrow Paint
Paint paint = new Paint();
paint.setColor(getResources().getColor(R.color.arrowColor);
centerX = getWidth() / 2;
centerY = getHeight() / 2;
arrLength = radius - 10;
if(centerX < centerY)
radius = centerX - margin;
else
radius = centerY - margin;
//Draw Shaft
int[] xy = findArrowPos(arrLength, arrHeading);
canvas.drawLine(centerX, centerY, xy[0], xy[1], paint);
//Draw ArrowHead
//This is where I'm confused
}
private int[] findArrowPos(double length, double angle) {
int[] points = new int[2];
double theta = Math.toRadians(angle);
points[0] = centerX + (int) (length * Math.cos(theta));
points[1] = centerY + (int) (length * Math.sin(theta));
return points;
}
}
Examinei os seguintes tópicos para obter orientação:
* http: //www.java-forums.org/awt-swing/6241-how-u-rotate-arrow-mark-line-moves-accordingly.htm
* Como desenhar uma linha de seta direcionada em Jav