Dans l'image ci-dessous, j'essaie de comprendre comment dessiner les graduations vues sur le cadran de la montre. Je sais comment tracer des lignes, mais je ne sais pas comment dessiner des lignes "effilées" comme l'image. Comment puis-je accomplir cela pour Android Wear? Je pense que je dois créer un Path
, mais je ne sais pas comment générer les coordonnées Path
.Comment dessiner des graduations non carrées
Répondre
Pour utiliser un Path
que vous devez faire quelque chose comme ceci:
Path path = new Path();
// Start at the top left corner
path.moveTo(screenCenterX - halfMarkerTopWidth, topMargin);
// Draw a line to the top right corner
path.lineTo(screenCenterX + halfMarkerTopWidth, topMargin);
// Draw a line to the bottom right corner
path.lineTo(screenCenterX + halfMarkerBottomWidth, topMargin + markerHeight);
// Draw a line to the bottom left corner
path.lineTo(screenCenterX - halfMarkerBottomWidth, topMargin + markerHeight);
// Close the Path (will automatically draw a line back to the top left corner)
path.close();
Ensuite, dessinez votre chemin 12 fois et juste tourner la toile 30 degrés entre chaque fois que vous dessinez.
canvas.save();
for (int i = 0; i < 12; i++) {
canvas.rotate(30, screenCenterX, screenCenterY);
canvas.drawPath(path, paint);
}
canvas.restore();
Votre solution fonctionne - mais j'ai du mal à trouver comment la dessiner 12 fois maintenant. L'appel 'canvas.rotate (30)' ne donne pas le résultat attendu. – Nxt3
Avez-vous une idée de la façon dont je pourrais pointer un de ces chemins à l'heure actuelle? – Nxt3
Ajout d'un code pour le dessiner. Vous ne savez pas exactement ce que vous voulez dire par "le point un de ces chemins vers l'heure actuelle"? Si c'est l'effet de surbrillance vu dans la capture d'écran de votre question, tout ce que vous avez à faire est de changer la couleur de votre Paint lorsque vous dessinez celle qui correspond à l'heure actuelle. Si vous ne voulez que sur l'heure actuelle, calculez simplement l'angle de cette heure, par ex. 6 heures serait 180 degrés, et faites pivoter la toile une fois en utilisant cette valeur. – TofferJ
Que faire si vous utilisez un vecteur ou un autre png? – cutiko
Je préfère ne pas si possible. Aucune autre raison que de ne pas avoir à gérer le chargement de bitmaps. – Nxt3