5 Réponses :
Si je comprends votre problème correctement, vous mettez en scène un groupe de visualisation et vous attendez à ce que les vues incluses à l'échelle en conséquence. Cela ne fonctionne pas de cette façon: vous échouez au groupe d'affichage et change de taille, mais ses enfants vues ne le font pas. P>
Échelle de toutes les sous-espions. Malgré tout, je ne suis pas sûr que les textes et les images seront automatiquement mis à l'échelle. Ce que vous voulez, c'est zoom, pas à l'échelle. Essayez Cette référence . P>
Quelle est la différence entre zoom and échelle? La photo 2 montre que les travaux de zoom / échelle (MSCALE ~ 0.8). C'est juste que le groupe de visit est coupé.
Je prends la retraite ma réponse alors, désolé pour le bruit.
Depuis le niveau de l'API 11, la classe code> Classe est
SetScalex () code> et
SetScaley () code> méthodes, qui fonctionnent comme prévu et aussi -Vues de la vue à l'échelle. Donc, si cela serait un moyen pour vous, déposez la bibliothèque et faites simplement
v.setScaleX(mScale);
v.setScaleY(mScale);
J'ai essayé avant. Il a le même effet de coupure. En fait, la bibliothèque est juste un proxy. Sur ICS les NineOldAndroids appellent tout simplement la même méthode.
au cas où n'importe qui est entré dans la même situation que moi. J'ai fini par utiliser cette approche:
protected void setScale(float scale, boolean updateView) { mScale = scale; if (updateView) { LayoutParams params = getLayoutParams(); onUpdateScale(scale, params); setLayoutParams(params); } } protected void onUpdateScale(float scale, LayoutParams params) { params.leftMargin = (int) (mModel.getX() * scale); params.topMargin = (int) (mModel.getY() * scale); params.width = (int) (mModel.getWidth() * scale); params.height = (int) (mModel.getHeight() * scale); }
Cette approche est-elle rapide? Je veux dire, faites-vous trop de mises à jour en utilisant quelque chose comme un geste à l'échelle, ou que vous comprenez seulement une fois à l'époque?
Je n'ai pas encore exécuté de points de repère ou de traceview, mais cela fonctionne bien sur Xoom 1 et Nexus S. Les exigences étaient que le déplacement et la mise à l'échelle doivent se produire de manière continue (comme Google Maps) et non une fois que l'interaction est terminée (comme zoomer Osmtracker). .
Alors, pas de scintillage? (+1 si vous répondez non :-))
Malheureusement, il scintille parfois (zoomer uniquement). Si vous résolvez cela, ajoutez une autre réponse ici :)
Utilisez Viewgroup.Layout. C'est peut-être le moyen le plus simple d'échelonner (& bouger) groupe de visit. P>
Le parent de votre vue doit avoir la propriété mais avec cette méthode Ne recevez pas les événements tactiles en dehors des limites du clip de vue. Vous pouvez contourner de vous en envoyer de votre activité ou en écrivant un groupe de visitères J'utilise un piratage différent qui semble fonctionner dans mon cas, l'astuce est de Maintenir votre propre matrice de transformation. Ensuite, vous devez surcharger une méthode de la méthode code> GROUPE CODE> pour le faire fonctionner. Par exemple: p> Android: Clipchildren Code> Désactivé (à partir du fichier de mise en page ou avec
SetClipChildren (false) code>).
personnalisé code> parent. P>
Vous pouvez obtenir la matrice de la vue. View.getmatrix () puis Invert IT, M.INVERT (M) et utilisez-le pour élaborer l'événement de mouvement.
J'ai essayé quelques hacks différents de fausses vues qui ont simplement relayé la touche brute qui a ensuite été transformée par la matrice de vues. Et la seule chose qui ait jamais travaillé systématiquement sur tout le matériel, j'ai accès à ma propre matrice et à utiliser cela pour transformer les motionvents, la vue et les rectangles invalidés.
Qu'attendez-vous que le résultat ressemble?
Quelque chose comme MapView. Que la mise en page (
myLayout code>) remplit l'écran entier et non coupé dans la photo 2. Pic. LayoutParam de MyLayout sont définis Match_Parent.