1. 程式人生 > >動態獲取和設定ImageView的寬度和高度

動態獲取和設定ImageView的寬度和高度

內某金融企業的一道面試題:如何在程式碼中獲得一個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()可以獲得點陣圖的大小,程式碼例子如下:

[html] view plain copy  print?
  1. <spanstyle="white-space:pre"></span>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,第一個問題我們搞定了(注意:這是原圖片的大小,不是我們佈局檔案中設定的大小)。

接下來我們看一下如何動態設定圖片的高度和寬度,這問題比較簡單,我們直接使用LayoutParams的物件來進行設定 

程式碼如下:

[html] view plain copy  print?
  1. <spanstyle="white-space:pre"></span>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);