2015-04-27 1 views
0

J'ai un ImageView défini comme suit en XML. C'est dans un ViewPager personnalisé.Comment connaître la taille d'une image mise à l'échelle?

<ImageView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/imageView" 
     android:scaleType="fitXY"/> 

Il fonctionne comme un charme, mais je dois connaître la hauteur réelle de l'image, après qu'il a été mis à l'échelle. Je prends les valeurs dans la méthode onMeasure de la coutume ViewPager, comme ceci:

View child = getChildAt(0); 

child.measure(widthMeasureSpec, MeasureSpec 
    .makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); 

int h = child.getMeasuredHeight(); 

La hauteur que je reçois est pas la hauteur de l'image à l'échelle, il est la taille originale de l'image avant été réduite.

Merci.

Répondre

1

Vous remplacez la fonction onMeasure pour obtenir la matrice d'image et trouver les valeurs d'échelle. comme si

float[] f = new float[9]; 
getImageMatrix().getValues(f); 
final float scaleX = f[Matrix.MSCALE_X]; 
final float scaleY = f[Matrix.MSCALE_Y]; 

// Get the drawable's real width and height 
final Drawable d = imageView.getDrawable(); 
final int origW = d.getIntrinsicWidth(); 
final int origH = d.getIntrinsicHeight(); 

// Calculate the actual dimensions 
final int actW = Math.round(origW * scaleX); 
final int actH = Math.round(origH * scaleY); 
log.v("actual dimensions",""+actW+actH); 

Source: https://stackoverflow.com/a/15538856/4743812