作用
ImageView,圖像視圖,直接繼承自View類,它的主要功能是用于顯示圖片,實(shí)際上它不僅僅可以用來顯示圖片,任何Drawable對(duì)象都可以使用ImageView來顯示。ImageView可以適用于任何布局中,并且Android為其提供了縮放和著色的一些操作
src 和 background 屬性
一言以蔽之
- src (前景):setImageDrawable( );
- background (背景):setBackgroundDrawable( );
區(qū)別
- src 存放的是原圖大小,不進(jìn)行拉伸,在 View中位置通過 scaleType 屬性設(shè)置
- background 根據(jù)給定的 width 和 height 進(jìn)行拉伸,可以設(shè)置透明度
- 兩屬性可以同時(shí)在 xml 或者 java 代碼中使用
scaleType說明
- android:scaleType=”center”
保持原圖的大小,顯示在 ImageView 的中心。當(dāng)原圖的 size 大于 ImageView 的 size,超過部分裁剪處理 - android:scaleType=”centerCrop”
以填滿整個(gè) ImageView 為目的,將原圖的中心對(duì)準(zhǔn) ImageView 的中心,等比例放大原圖,直到填滿 ImageView 為止(指的是 ImageView 的寬和高都要填滿),原圖超過 ImageView 的部分作裁剪處理 - android:scaleType=”centerInside”
以原圖完全顯示為目的,將圖片的內(nèi)容完整居中顯示,通過按比例縮小原圖的 size 寬(高)等于或小于 ImageView 的寬(高)。如果原圖的 size 本身就小于 ImageView 的
size,則原圖的 size 不作任何處理,居中顯示在 ImageView - android:scaleType=”matrix” (默認(rèn)方式)
不改變?cè)瓐D的大小,從 ImageView 的左上角開始繪制原圖,原圖超過 ImageView 的部分作裁剪處理 - android:scaleType=”fitCenter”
把原圖按比例擴(kuò)大或縮小到 ImageView 的最小邊,居中顯示 - android:scaleType=”fitEnd”
把原圖按比例擴(kuò)大(縮小)到 ImageView 的高度,顯示在 ImageView 的下部分位置 - android:scaleType=”fitStart”
把原圖按比例擴(kuò)大(縮小)到 ImageView 的高度,顯示在 ImageView 的上部分位置 - android:scaleType=”fitXY”
把原圖按照指定的大小在 ImageView 中顯示,拉伸顯示圖片,不保持原比例,填滿 ImageView
透明度 alpha 的坑
ImageView 設(shè)置透明度主要有以下三種方法:
- setAlpha(@FloatRange(from=0.0, to=1.0) float alpha) (View提供)
- setAlpha(int alpha) (已經(jīng)標(biāo)記為@Deprecated)
- setImageAlpha(int alpha) (API>=16)
其中,setImageAlpha(int alpha) 內(nèi)部調(diào)用 setAlpha(int alpha) 方法,查看 API 可知,setImageAlpha 主要是針對(duì) image 而言,一方面在命名上更為貼切與 View 中的
setAlpha 方法區(qū)分,同時(shí)做好兼容性。那 ImageView.setAlpha(0.7f) 來設(shè)置ImageView 的透明度對(duì) src 還是 background 有效果呢?正確答案: - android:src 在設(shè)置 ImageView 的 setAlpha(int alpha) 時(shí),起作用;
- android:background 在設(shè)置 ImageView 的 setAlpha(int alpha) 時(shí),不起作用