imageView--转-如何代码动态的获取和设置ImageView的宽度和高度?

 11-

12-

13-android获取图片原始长宽;

 

 

=========

11--国内某金融企业的一道面试题:如何在代码中获得一个ImageVIew的高度和宽度?

相信很大一部分人,会直接想到用imageview.getWidth() 和 imageview.getHeight() 来获得,其实不然。

我们可以自己写个程序来跑一下,当我们放置一张图片在imageView中,并且设置了它的高度和宽度,我们不妨在日志控制台输出看一下,

Log.i("MainActivity", "宽度:"+String.valueOf(imageView.getWidth()));
Log.i("MainActivity", "高度:"+String.valueOf(imageView.getHeight()));

输出结果如下:

 

是不是很恼火呀,结果就是这样。

那么究竟该如何获取图片的高度和宽度呢? 其实,我们可以通过构建一个BItMap对象出来,这个BItMap就是从我们的那种图片资源转换而来,bitmap对象中的getWidth() 和getHeight()可以获得位图的大小,例子:

  1. ImageView imageView = (ImageView)findViewById(R.id.imageView);  
  2.     Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.newscar);  
  3.     Log.i("MainActivity", "宽度:"+String.valueOf(bitmap.getWidth()));  
  4.     Log.i("MainActivity", "高度:"+String.valueOf(bitmap.getHeight()));  


这个时候我们再来看一下日志控制台的输出结果:

Ok,第一个问题我们搞定了(注意:这是原图片的大小,不是我们布局文件中设置的大小)。

 

12--我们看一下如何动态设置图片的高度和宽度,这问题比较简单,我们直接使用LayoutParams的对象来进行设置 

代码如下:

    1. ImageView imageView = (ImageView)findViewById(R.id.imageView);  
    2.     imageView.setImageResource(R.drawable.newscar);  
    3.     LayoutParams params = imageView.getLayoutParams();  
    4.     params.height=200;  
    5.     params.width =100;  
    6.     imageView.setLayoutParams(params);  

 

13--android获取图片原始长宽

  在android里面要要取一张96 x 96像素每个像素点的RGB值然后处理,但是一开始直接读取

  1. Bitmap mBitmap =BitmapFactory.decodeResource(getResources(), R.drawable.jimg001);  
  2. int width=opts.outWidth;  
  3. int height=opts.outHeight;  

     这样读出来的值却实变成了144 x 144像素,很无语,对Android接触不多,查看各种资料才发现如果这样写android默认读取的不是原始大小

  1. BitmapFactory.Options opts = new BitmapFactory.Options();  
  2.         opts.inJustDecodeBounds = true;  
  3.         BitmapFactory.decodeResource(getResources(), R.drawable.jimg001, opts);  
  4.         opts.inSampleSize = 1;    
  5.         opts.inJustDecodeBounds = false;  
  6.         Bitmap mBitmap =BitmapFactory.decodeResource(getResources(), R.drawable.jimg001, opts);  
  7.         int width=opts.outWidth;  
  8.         int height=opts.outHeight;  

      将BitmapFactory.Options.inSampleSize设为1才是原始大小,有时候根据需要因为图片太大而内存溢出时,需要适当选择inSampleSize的值,可以参考http://hi.baidu.com/liganggang/item/6ab1e480fa2da1e3e596e015

 

 

posted on 2015-03-12 11:32  左手指月  阅读(906)  评论(0编辑  收藏  举报