2015-04-27 2 views
0

У меня есть ImageView, как указано в XML. Он находится внутри пользовательского ViewPager.Как я могу узнать размер масштабируемого изображения?

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

Он работает как шарм, но мне нужно знать фактическую высоту изображения, после того, как оно было уменьшено. Я принимаю значение в методе onMeasure пользовательской ViewPager, например:

View child = getChildAt(0); 

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

int h = child.getMeasuredHeight(); 

Высота я получаю не высоту изображения масштабируется, это оригинальный размер изображения перед пересчитано.

Спасибо.

ответ

1

Вы переопределите функцию onMeasure, чтобы получить матрицу изображения и найти значения шкалы. как так

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); 

Источник: https://stackoverflow.com/a/15538856/4743812

Смежные вопросы