Android获得图片宽高的方法

在百度问答上看到很好的解答

android开发中ImageView在显示图片的时候,受限于屏幕大小和图片宽高。通常图片是被缩放过,且不是宽和高都充满ImageView的,获得被实际绘制的宽高大小代码如下:

ImageView iv = (ImageView) findViewById(R.id.iv_test);

         iv.setImageResource(R.drawable.abc);
         
         //等待ImageVivew加载完成
         iv.post( new  Runnable(){    
 
             @Override
             public  void  run() {
                 // TODO Auto-generated method stub
                 
                 //ImageView的宽和高
                 Log.d( "lxy" "iv_W = "  + iv.getWidth() +  ", iv_H = "  + iv.getHeight());
 
                 //获得ImageView中Image的真实宽高,
                 int  dw = iv.getDrawable().getBounds().width();
                 int  dh = iv.getDrawable().getBounds().height();
                 Log.d( "lxy" "drawable_X = "  + dw +  ", drawable_Y = "  + dh);
                 
                 //获得ImageView中Image的变换矩阵
                 Matrix m = iv.getImageMatrix();
                 float [] values =  new  float [ 10 ];
                 m.getValues(values);
                 
                 //Image在绘制过程中的变换矩阵,从中获得x和y方向的缩放系数
                 float  sx = values[ 0 ];
                 float  sy = values[ 4 ];
                 Log.d( "lxy" "scale_X = "  + sx +  ", scale_Y = "  + sy);
                 
                 //计算Image在屏幕上实际绘制的宽高
                 int  cw = ( int )(dw * sx);
                 int  ch = ( int )(dh * sy);
                 Log.d( "lxy" "caculate_W = "  + cw +  ", caculate_H = "  + ch);搜索
             }});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值