获取imageview 图片大小

如题,ImageView在显示图片的时候,受限于屏幕大小,和图片宽高。通常图片是被缩放过,且不是宽和高都充满ImageView的。

此时,我们如何获得Image被实际绘制的宽高呢?如下:


  1. final ImageView iv = (ImageView) findViewById(R.id.iv_test);  
  2.         iv.setImageResource(R.drawable.abc);  
  3.           
  4.         //等待ImageVivew加载完成  
  5.         iv.post(new Runnable(){   
  6.   
  7.             @Override  
  8.             public void run() {  
  9.                 // TODO Auto-generated method stub  
  10.                   
  11.                 //ImageView的宽和高  
  12.                 Log.d("lxy", "iv_W = " + iv.getWidth() + ", iv_H = " + iv.getHeight());  
  13.   
  14.                 //获得ImageView中Image的真实宽高,  
  15.                 int dw = iv.getDrawable().getBounds().width();  
  16.                 int dh = iv.getDrawable().getBounds().height();  
  17.                 Log.d("lxy", "drawable_X = " + dw + ", drawable_Y = " + dh);  
  18.                   
  19.                 //获得ImageView中Image的变换矩阵  
  20.                 Matrix m = iv.getImageMatrix();  
  21.                 float[] values = new float[10];  
  22.                 m.getValues(values);  
  23.                   
  24.                 //Image在绘制过程中的变换矩阵,从中获得x和y方向的缩放系数  
  25.                 float sx = values[0];  
  26.                 float sy = values[4];  
  27.                 Log.d("lxy", "scale_X = " + sx + ", scale_Y = " + sy);  
  28.                   
  29.                 //计算Image在屏幕上实际绘制的宽高  
  30.                 int cw = (int)(dw * sx);  
  31.                 int ch = (int)(dh * sy);  
  32.                 Log.d("lxy", "caculate_W = " + cw + ", caculate_H = " + ch);  
  33.             }});  

 

    1. <ImageView   
    2.         android:id="@+id/iv_test"  
    3.         android:layout_width="match_parent"  
    4.         android:layout_height="match_parent"   
    5.         /> 
posted @ 2014-09-20 16:00  湖心北斗  阅读(691)  评论(0编辑  收藏  举报