2011-09-19 4 views
1

J'ai obtenu mon image pour au moins DÉFILEMENT, mais je ne veux pas qu'il défile devant l'image elle-même. J'ai appelées variables maxLeft, maxRight, etc que j'ai que je actuellement un peu mis àDéfilement ImageView Android Problème (overscrolling)

ImageView img = (ImageView)findViewById(R.id.mapimg); 
    DisplayMetrics dm = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(dm); 

    int maxX = (int)????; 
    int maxY = (int)????; 

    // set scroll limits 
    final int maxLeft = (maxX * -1); 
    final int maxRight = maxX; 
    final int maxTop = (maxY * -1); 
    final int maxBottom = maxY; 

J'ai été déconner avec ce que je pouvais en place des points d'interrogation que je mis là, mais il me semble être coincé, surtout quand j'essaye différents émulateurs. Toute aide serait vraiment appréciée! Merci

Répondre

1

Si je comprends bien votre question, vous voulez étendre ImageView pour ajouter le défilement. Si c'est le cas, vous ne voulez pas utiliser getWindowmanager() car cela renvoie les dimensions de l'ensemble de l'écran (y compris la barre de titre). Au contraire, vous souhaitez étendre ImageView et obtenir les dimensions de la vue à partir de onMeasure. Vous pouvez consulter ma réponse here où j'ai ajouté la fonctionnalité de zoom et de panoramique à ImageView.

J'ai utilisé setImageMatrix et postTranslate pour définir une matrice égale à l'image et la déplacer. Pour suivre l'emplacement de l'image, je les suivantes:

float f[] = new float[9]; 
matrix.getValues(m); //see matrix documentation. inserts matrix values into f. 
float x = m[Matrix.MTRANS_X]; 
float y = m[Matrix.MTRANS_Y]; 

Float x et y surveilleront le coin supérieur gauche de l'image. Assurez-vous que si l'événement suivant entraîne le défilement hors limites de l'image, ajustez postTranslate pour qu'il soit égal à la bordure de l'image. La réponse que j'ai liée ci-dessus devrait vous donner un bon endroit pour commencer, et si vous voulez aussi la fonctionnalité de zoom, alors vous avez de la chance, parce que vous n'avez pas à faire de travail supplémentaire.