Comment trouver la position de traduction actuelle dans Canvas?

Comment puis-je obtenir la position de traduction actuelle d'un Canvas? J'essaie de dessiner des choses où mes coordonnées sont un mélange de relatif (l'une par rapport à l'autre) et absolu (à la toile).

Disons que je veux faire

  • Exécuter le code dans le thread principal d'un autre thread
  • Android: affiche / cache une vue à l'aide d'une animation
  • Liste d'affichage Android à l'aide de extensibleListView
  • Définir Android TimePicker en XML
  • Déterminer la vue apparaissant dans LayoutManager pré-mise en page
  • ExpandableListView avec un EditText
  • canvas.translate(x1, y1); canvas.drawSomething(0, 0); // will show up at (x1, y1), all good // now i want to draw a point at x2,y2 canvas.translate(x2, y2); canvas.drawSomething(0, 0); // will show up at (x1+x2, y1+y2) // i could do canvas.drawSomething(-x1, -y1); // but i don't always know those coords 

    Cela fonctionne mais est sale:

     private static Point getCurrentTranslate(Canvas canvas) { float [] pos = new float [2]; canvas.getMatrix().mapPoints(pos); return new Point((int)pos[0], (int)pos[1]); } ... Point p = getCurrentTranslate(canvas); canvas.drawSomething(-px, -py); 

    La toile a une méthode getMatrix, elle a un setTranslate mais pas de getTranslate . Je ne veux pas utiliser canvas.save() et canvas.restore() car la façon dont je dessine les choses est un peu difficile (et probablement désordonné …)

    Existe-t-il un moyen plus propre d'obtenir ces coordonnées actuelles?

  • Google Play Warning: WebViewClient.onReceivedSslError handler
  • Android: Comment puis-je régler le niveau de zoom de la vue de la carte sur un rayon de 1 km autour de mon emplacement actuel?
  • Possibilité de choisir la date future lors de la définition de la date max dans datepicker
  • Comment ajuster jvm args pour la mémoire dex en gradle?
  • Comment cacher les barres de défilement dans Android WebView via React Native
  • Méthodes alternatives d'achat dans l'application pour Android
  • One Solution collect form web for “Comment trouver la position de traduction actuelle dans Canvas?”

    Vous devez d'abord réinitialiser la matrice de transformation. Je ne suis pas un développeur Android, en regardant les documents sur les toiles Android , il n'y a pas de matrice de réinitialisation, mais il existe un setMatrix (android.graphics.Matrix). Il dit que si la matrice donnée est nulle, elle définira la matrice actuelle dans la matrice d'identité, ce que vous voulez. Je pense donc que vous pouvez réinitialiser votre position (et l'échelle et l'inclinaison) avec:

     canvas.setMatrix(null); 

    Il serait également possible d'obtenir la traduction actuelle via getMatrix. Il existe une méthode mapVectors () que vous pouvez utiliser pour les matrices pour voir où le point [0,0] serait mappé, ce serait votre traduction. Mais dans votre cas, je pense que la réinitialisation de la matrice est la meilleure.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.