Android ImageView屬性


ImageView 繼承自View組件,主要功能是用於顯示圖片,實際上它不僅僅可以用來顯示圖片,任何Drawable對象都可以使用ImageView來顯示。ImageView可以適用於任何布局中,並且Android為其提供了縮放和着色的一些操作。

1. foreground、src 和 background 屬性區別

1)background指的是背景,foreground指的是前景,而src指的是內容;三者可以同時使用;
2)src填入圖片時,是按照圖片大小直接填充,並不會進行拉伸;而使用backgroundforeground填入圖片,則是會根據ImageView給定的寬度來進行拉伸;
3)backgroundforeground是所有view都有的屬性,總是縮放到view的大小,不受scaleType影響;而src是ImageView特有屬性,它會受到scaleType的影響。

舉個栗子:

<ImageView android:layout_width="260dp" android:layout_height="260dp" android:foreground="#99000000" android:background="#ff0000" android:src="@mipmap/ic_launcher"/> 

效果圖:

 
前背景效果圖

從圖上可以看出,雖然foregroundsrc都為前景,但是foreground卻在src之上。從層級上比較:foreground>src>background

2. adjustViewBounds屬性用法

ImageView為我們提供了adjustViewBounds屬性,用於設置縮放時是否保持原圖長寬比。 adjustViewBounds詳細介紹,請移駕 —— 《Android辟謠篇 —— ImageView寬高自適應》

3. 設置透明度

ImageView 設置透明度主要有以下幾種方法:

  • android:alpha // 0f~1f
  • setAlpha(float alpha); // 0f~1f
  • setAlpha(int alpha); // 0~255,已過時
  • setImageAlpha(int alpha); // API>=16
4. 設置圖片方式

1)設置前景

  • foreground

xml布局中:

android:foreground="@color/blue"
android:foreground="@mipmap/ic_launcher"
android:src="@mipmap/ic_launcher"

Java代碼中:

// 設置前景圖 image.setForeground(getResources().getDrawable(R.mipmap.ic_launcher)); // 設置前景色 image.setForeground(getResources().getDrawable(R.color.blue)); 

注意:
關於設置foreground無效問題,View源碼片段:

case R.styleable.View_foreground: if (targetSdkVersion >= VERSION_CODES.M || this instanceof FrameLayout) { setForeground(a.getDrawable(attr)); } break; 

foreground屬性只有在以下兩種情況下生效:
(1) Android M版本(6.0)及以上 ;
(2) FrameLayout本身及其子類。

  • src

xml布局中:

android:src="@mipmap/ic_launcher"

Java代碼中:

// 1. setImageDrawable(Drawable drawable) image.setImageDrawable(getResources().getDrawable(R.drawable.ic_launcher)); //不會變形 // 2. setImageBitmap(Bitmap bm) Stringpath=Environment.getExternalStorageDirectory()+File.separator+”test.jpg”; Bitmap bm = BitmapFactory.decodeFile(path); image.setImageBitmap(bm);//不會變形 // 3. setImageResource(int resId) image.setImageResource(R.drawable.ic_launcher);//不會變形 

2)設置背景

xml布局中:

android:background="@mipmap/ic_launcher"
android:background="@color/blue"

Java代碼中:

// 1. setBackground(Drawable background) image.setBackground(getResources().getDrawable(R.drawable.ic_launcher));//變形 // 2. setBackgroundResource(int resid) image.setBackgroundResource(R.drawable.ic_launcher);//變形 // 3. setBackgroundDrawable(Drawable background) image.setBackgroundDrawable(getResources().getDrawable(R.drawable.ic_launcher));//變形 // setBackgroundColor(int color) image.setBackgroundColor(getResources().getColor(R.color.blue)); 
5. ScaleType屬性

android:scaleType用於設置顯示的圖片如何縮放或者移動以適應ImageView的大小,Java代碼中可以通過imageView.setScaleType(ImageView.ScaleType.CENTER);來設置。 可選值如下:

  • MATRIX / matrix:用矩陣的方式繪制,從ImageView的左上角開始繪制原圖,不縮放圖片, 超過ImageView部分作裁剪處理;
  • CENTER / center:保持原圖的大小,顯示在ImageView的中心。當原圖的尺寸大於ImageView的尺寸,超過部分裁剪處理;
  • CENTER_CROP / centerCrop:保持橫縱比縮放圖片,直到完全覆蓋ImageView為止(指的是ImageView的寬和高都要填滿),原圖超過ImageView的部分作裁剪處理;
  • CENTER_INSIDE / centerInside:將圖片的內容完整居中顯示,通過按比例縮小原圖尺寸的寬高等於或小於ImageView的寬高。如果原圖的尺寸本身就小於ImageView的尺寸,則原圖的尺寸不作任何處理,居中顯示在ImageView;
  • FIT_XY / fitXY:把原圖寬高進行不保持原比例放縮,直到填充滿ImageView為止;
  • FIT_START / fitStart:把原圖按比例放縮使之等於ImageView的寬高,縮放完成后將圖片放在ImageView的左上角;
  • FIT_CENTER / fitCenter:把原圖按比例放縮使之等於ImageView的寬高使之居中顯示,縮放后放於中間;
  • FIT_END / fitEnd:把原圖按比例放縮到ImageView的寬高,縮放完成后將圖片放在ImageView的右下角。
 
ScaleType屬性效果圖
參考

ImageView官方文檔,開啟傳送門



作者:翻譯不了的聲響
鏈接:https://www.jianshu.com/p/7d713775df9f
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM