我如何知道已缩放的图像的大小?

时间:2015-04-27 18:37:26

标签: android imageview runtime size scale

我在XML中定义了如下ImageView。它位于自定义ViewPager中。

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

它的工作方式就像一个魅力,但我需要知道图像缩放后的实际高度。我正在使用自定义ViewPager的onMeasure方法中的值,如下所示:

View child = getChildAt(0);

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

int h = child.getMeasuredHeight();

我得到的高度不是缩放图像的高度,而是缩放前图像的原始尺寸。

感谢。

1 个答案:

答案 0 :(得分: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