I am trying to achieve this WatchFace using Android API:
These are my paints used for Hours, Minutes and Seconds:
secondsPaint.setAntiAlias(true);
secondsPaint.setColor(Color.RED);
secondsPaint.setStyle(Paint.Style.STROKE);
secondsPaint.setStrokeJoin(Paint.Join.ROUND);
secondsPaint.setStrokeWidth(3f);
secondsPaint.setAntiAlias(true);
minutesPaint.setColor(Color.WHITE);
minutesPaint.setStyle(Paint.Style.STROKE);
minutesPaint.setStrokeJoin(Paint.Join.ROUND);
minutesPaint.setStrokeWidth(4f);
hoursPaint.setAntiAlias(true);
hoursPaint.setColor(Color.WHITE);
hoursPaint.setStyle(Paint.Style.STROKE);
hoursPaint.setStrokeJoin(Paint.Join.ROUND);
hoursPaint.setStrokeWidth(5f);
I have implemented the following code to draw the background, the seconds, minutes and hours:
// Background
canvas.drawBitmap(background, 0, 0, null);
Then I draw the hours and minutes
// Draw the minute and hour hands.
float minX = (float) Math.sin(minRot) * minLength;
float minY = (float) -Math.cos(minRot) * minLength;
canvas.drawLine(centerX, centerY, centerX + minX, centerY + minY, minutesPai
float hrX = (float) Math.sin(hrRot) * hrLength;
float hrY = (float) -Math.cos(hrRot) * hrLength;
canvas.drawLine(centerX, centerY, centerX + hrX, centerY + hrY, hoursPaint);
And finally the seconds
// draw seconds
float secX = (float) Math.sin(secRot) * secLength;
float secY = (float) -Math.cos(secRot) * secLength;
canvas.drawLine(centerX, centerY, centerX + secX, centerY + secY, secondsPaint);
I need to:
At the moment the result is the following:
To draw a circle is as just as easy as using drawCircle()
.
So, the dirty trick could be to draw the white one and another bigger one (and maybe even a smaller one) of the same background color to cover the portion of the minutes and second hands.
So, being drawn after the hands, these circles will cover the portion you want to hide.
A very cheap trick (no other trigonometry involved).
Works for sure.
You could even use a layer-list drawable to overlay in the center... ;)
But drawCircle() is quite straightforward, I guess.