Android:如何使用fitxy scaletype在imageview中获取drawable的真实尺寸?

时间:2015-01-17 06:18:58

标签: android dimension

我有一个带有fitxy scaletype的imageview。 我需要得到它的drawable的真实维度,但是下面的代码我得到了fitxy模式的维度。​​

     int finalHeight, finalWidth;
final ImageView iv = (ImageView)findViewById(R.id.scaled_image);
final TextView tv = (TextView)findViewById(R.id.size_label);
ViewTreeObserver vto = iv.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
    public boolean onPreDraw() {
        // Remove after the first run so it doesn't fire forever
        iv.getViewTreeObserver().removeOnPreDrawListener(this);
        finalHeight = iv.getMeasuredHeight();
        finalWidth = iv.getMeasuredWidth();
        tv.setText("Height: " + finalHeight + " Width: " + finalWidth);
        return true;
    }
});

如何使用fitxy scaletype获取imageview中可绘制的实际尺寸?

1 个答案:

答案 0 :(得分:0)

使用两种方法中的任何一种来获得相应的高度和宽度

Drawable drawable = imageView.getDrawable();
// Approach 1
drawable.getIntrinsicHeight(); // drawable.getIntrinsicWidth(); //

//Approach 2   
Rect rect = drawable.getbounds();
rect.height();
rect.width();

但确保在ImageView onDraw之后应用此代码,测量和布局传递以每次获得适当的宽度。