2011-08-30 1 views
0

J'ai fait ma propre classe avec des événements tactiles pour déplacer et zoomer une image (toile) pour une galerie. Le problème que j'ai, c'est que l'image bouge toujours, même à l'extérieur de l'écran. Le bon comportement est la frontière gauche de l'image doit être à la frontière de l'écran à gauche ou à la main gauche à ... et même avec le reste des frontières ...Android: ajuster la toile pour voir les frontières

J'essaie de mettre max et min à mPosY et mPosX mais c'est dur et compliqué, car quand la photo est plus petite que l'image, elle doit être centrée ...

Une idée? voici une partie du code:

public class TouchView extends View { 
    ... 
    @Override 
     public void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     canvas.save(); 
     canvas.translate(mPosX, mPosY); 
     mScaleFactor = Math.max(mScaleFactor, minScaleFactor); 
     canvas.scale(mScaleFactor, mScaleFactor, pivotX, pivotY); 
     mIcon.draw(canvas); 
     canvas.restore(); 
    } 
    ... 
} 

Merci :)

Répondre

1
if(imageWidth < screenWidth && imageHeight < screenHeight) { 
    imageX = screenWidth/2 - imageWidth/2; 
    imageY = screenHeight/2 - imageHeight/2; 
} else { 
    if(imageX > 0) imageX = 0; 
    if(imageY > 0) imageY = 0; 
    if(imageX + imageWidth < screenWidth) 
     imageX = screenWidth - imageWidth; 
    if(imageY + imageHeight < screenHeight) 
     imageY = screenHeight - imageHeight; 
} 

était un peu difficile à comprendre le problème, mais en termes d'arithmétique simple, cela devrait faire le travail.