Android affichage de l'image de la matrice d'échelle + traduire

Je suis en train de récupérer manuellement une image à l'intérieur d'une imageview centré et de montage de l'écran. J'ai besoin de le faire avec une matrice (je vais modifier de façon dynamique la matrice de transformation).

Problème est que je ne peut pas obtenir l'image centrée dans la vue (échelle). Voici le code:

//Compute the scale to choose (this works)
float scaleX = (float) displayWidth / (float) imageWidth;
float scaleY = (float) displayHeight / (float) imageHeight;
float minScale = Math.min(scaleX, scaleY);

//tx, ty should be the translation to take the image back to the screen center
float tx = Math.max(0, 
        0.5f * ((float) displayWidth - (minScale * imageWidth)));
float ty = Math.max(0, 
        0.5f * ((float) displayHeight - (minScale * imageHeight)));

//Compute the matrix
Matrix m = new Matrix();
m.reset();

//Middle of the image should be the scale pivot
m.postScale(minScale, imageWidth/2, imageHeight/2);

//Translate
m.postTranslate(tx, ty);

imageView.setImageMatrix(m);

Le code ci-dessus fonctionne si je ne suis pas le centre de l'échelle, sur le centre de l'image (mais j'ai besoin de le faire plus tard si j'ai besoin de comprendre la formule maintenant).

J'ai pensé à faire ce qui suit, permettrait de corriger le problème, mais l'image est toujours en décalage (vers le bas et à droite).

tx += 0.5*imageWidth*minScale;
ty += 0.5*imageHeight*minScale;

Certaines valeurs que j'ai:
- image: 200x133
- affichage: 800 x 480
- minScale: 2.4
- finale coin supérieur gauche de l'image: 100, 67 (17, 0)

  • Bonjour, je vais avoir le même type d'exigence. pouvez-vous s'il vous plaît partagez-moi l'exemple ici. Cela permettrait d'économiser mon temps.