2012-05-08 6 views
0

Dans mon application Android, je suis coincé dans un problème et rien ne semble fonctionner pour moi. J'ai un ImageView sur le dessus d'un autre ImageView dans une disposition relative. Maintenant, j'ai besoin de redimensionner l'imageview sur le dessus lorsque l'utilisateur touche l'un de ses coins et fait glisser. Tout comme un cadre de culture, nous voyons généralement. Lorsque nous traînons un coin, le coin diagonalement opposé doit rester fixe et le redimensionnement doit être fait à travers le coin qui est traîné. Ce que je fais c'est de définir OnTouchListener et d'obtenir de nouvelles coordonnées/faites glisser sur Action.MOVE puis j'ai essayé de redimensionner en utilisant createScaledBitmap de Bitmap. Cela redimensionne la vue de l'image, mais pas à travers le coin qui est en train d'être déplacé. Je suis totalement confus. Comment puis-je utiliser les coordonnées pour dessiner une vue d'image comme nous le faisons tout en dessinant un rectangle en utilisant Canvas. S'il vous plaît aider.Comment redimensionner dynamiquement un ImageView en le faisant glisser depuis ses coins comme un cadre de découpe sur une image?

Répondre

0

Je ne ferais pas cela dans un ImageView. Je voudrais sous-classe View et redéfinir onTouchEvent et onDraw pour gérer l'entrée et dessiner tous les différents composants. Vous devez décomposer cela en composants et gérer un certain nombre d'objets dans cette vue.

Vous avez un Rect qui représente la taille de la zone de recadrage. Cela vaut probablement par défaut à la taille du contrôle. Dans onTouchEvent, vous devez tester une zone autour de chaque coin, puis suivre le coin qui est déplacé pour redimensionner votre Rect de manière appropriée. Vous n'avez pas besoin d'appeler createScaledBitmap chaque fois que vous le dessinez, et vous ne devriez probablement pas le faire parce que vous flirtez avec une exception OutOfMemoryException à ce stade (nettoyez vos Bitmaps trop lentement et vous découvrirez à la dure Qu'est ce que c'est). Il suffit de décoder le bitmap lorsque le contrôle est créé et de le dessiner sur le canevas en utilisant un Rect de destination.

Beaucoup de code à écrire, mais ça sonne comme un projet amusant. Il n'y a pas de moyen facile de laisser tomber un contrôle comme celui-ci (si je vous comprends bien). Vous devez gérer les touches, les dragues et le rectangle de destination dans la vue personnalisée.

Questions connexes