这是我的问题:
假设ImageView大小不等于缩放的drawable,如何在scalling之后获取ImageView中可绘制的drawable的显示大小?
许多方法只返回Drawable的原始大小或仅返回ImageView的大小。
这是描述我想要的图片:
http://image.noelshack.com/fichiers/2013/06/1360144144-sans-titre.png
1 - > ImageView尺寸
2 - >我希望在px中获得的缩放图像大小
谢谢。
答案 0 :(得分:2)
从您发布的图片中我假设您在ImageView上有scaleType为FIT_CENTER(或者CENTER_INSIDE,其drawable大于imageView)
所以你可以像这样计算显示的尺寸
boolean landscape = imageView.getWidth() > imageView.getHeight();
float displayedHeight;
float displayedWidth;
if (landscape){
displayedHeight = imageView.getHeight();
displayedWidth = (float) drawableWidth * imageView.getHeight() / drawableHeight;
} else {
displayedHeight = (float) drawableHeight * imageView.getWidth() / drawableWidth;
displayedWidth = imageView.getWidth();
}
注意:为了便于阅读,代码未简化。
可应用于所有scaleTypes的另一种更强大的方法是使用imageView用于缩放图像的矩阵
float[] f = new float[9];
imageView.getImageMatrix().getValues(f);
float displayedWidth = drawableWidth * f[Matrix.MSCALE_X];
float displayedHeight = drawableHeight * f[Matrix.MSCALE_Y];