標籤:
一、引言
ImageView繼承自View組件,主要功能用來顯示圖片,實際上他能顯示的不僅是圖片,Drawable對象都可以用ImageView來顯示。
ImageView派生了ImageButton、ZoomButton等組件,具體的派生和繼承關係可以查看API文檔,我這邊開啟實在慢,就不再了。
本地API開啟太慢了,本想放棄,不過在網上看到android api中文網站,開啟速度不錯,所以繼承關係如:
在這裡我們可以看到,ImageView繼承自View,直接子類是ImageButton和QuickContactBadge,間接子類是ZoomButton。
這裡我也發一下這個API線上網址,開啟慢的可以試一下這個:
1:API中文API
二、ImageView支援的XML屬性和方法
XML屬性 |
相關方法 |
說明 |
| android:adjustViewBounds |
setAdjustViewBounds(boolean) |
設定ImageView是否調整自己的邊界來保持所顯示圖片的長寬比 |
| android:cropToPadding |
setCropToPadding(boolean) |
如果將該屬性設定為true,該組件將會被截取到保留該ImageView的padding |
| android:maxHeight |
setMaxHeight(int) |
設定ImageView的最大高度 |
| android:maxWidth |
setMaxWidth(int) |
設定ImageView的最大寬度 |
| android:scaleType |
setScaleType(ImageView.ScaleType) |
設定所顯示的圖片如何縮放或移動以適應ImageView的大小 |
| android:src |
setImageResource(int) |
設定ImageView所顯示的Drawable對象的ID |
scaleType是一個重要的屬性,它可設定的值如下:
值 |
說明 |
| ImageView.Scale.MATRIX |
使用Matrix方式進行縮放 |
| ImageView.Scale.FIT_XY |
對圖片橫向、縱向獨立縮放,使得該圖完全適應於ImageView,圖片的縱橫比可能會改變 |
| ImageView.Scale.FIT_START |
保持縱橫比縮放圖片,直到該圖能完全顯示到ImageView,從ImageView的左上方開始顯示 |
| ImageView.Scale.FIT_CENTER |
保持縱橫比縮放圖片,直到該圖能完全顯示到ImageView,從ImageView的中間顯示 |
| ImageView.Scale.FIT_END |
保持縱橫比縮放圖片,直到該圖能完全顯示到ImageView,從ImageView的右下角顯示 |
| ImageView.Scale.CENTER |
把圖片放到ImageView中間,不進行任何縮放 |
| ImageView.Scale.CENTER_CROP |
保持縱橫比縮放圖片使得圖片能完全覆蓋ImageView,最要圖片最短邊能顯示即可。 |
| ImageView.Scale.CENTER_INSIDE |
保持縱橫比縮放圖片,以使得ImageView能完全顯示該圖片 |
為了能控制ImageView,API提供了如下操作方法:
方法名稱 |
說明 |
| setImageBitmap(Bitmap bm) |
使用Bitmap對象設定ImageView顯示的圖片 |
| setImageDrawable(Drawable drawable) |
使用Drawable對象設定ImageView顯示的圖片 |
| setImageResource(int resId) |
使用資源ID設定ImageView顯示的圖片 |
| setImageURI(Uri uri) |
使用圖片的URI地址設定ImageView顯示的圖片 |
三、ImageView簡單使用方法
ImageView的功能比較簡單,這裡借用瘋三的執行個體做一個簡單的圖片瀏覽器示範ImageView的使用方法。
範例程式碼如下:
頁面配置主要採用線性布局,上方嵌套了一個線性布局,用於置中放了三個按鈕,主要實現切換圖片和增減透明度的功能。
後台代碼如:
代碼比較簡單,圈中的1部分主要完成按鈕1即是“下一張”的功能。圈中的2部分完成透明度的增減,螢幕顯示問題透明度的減少部分代碼不全,不過大家可以自行補全,私下測試一下ImageView更多的功能。
四、ImageView的其他網上學習樣本
在書本中我們能學到的都是基本的使用方法,而對於更多的擴充使用方法廣大萬能的萬能的網友也都分享了很多,這裡不再做COPY和粘貼,我直接給出來網址,大家自行參考一下。
1.圖解說明android 中ImageView的scaletype屬性
2.Android ApiDemos 系列解析【View-ImageView/ImageButton】
3.Android中ImageView的堆棧應用
4.Android學習開發之路4——圖片顯示imageVIew
5.簡單的手指拖動圖片,圖片滑來滑去顯示應用-Gallery和BaseAdapter以及ImageView的使用
6.ImageView圖片如何全螢幕顯示
7.android ImageView繪製開關按鈕
8.Android imageview 多點觸碰
9.關於ImageView圖片迴圈跑馬燈的效果
五、ImageButton和ZoomButton
Button與ImageButton的區別在於,Button按鈕上顯示的是文字,而ImageButton上顯示的圖片。需要注意的一點就是為ImageButton設定Text屬性沒有作用,因為本質上ImageButton是ImageView,即使指定了Text屬性,也不會顯示任何文字。如果使用ImageButton的話,圖片按鈕可以指定src屬性,該屬性可以 設定靜態圖片,也可以設定自訂的Drawable對象,實現出使用者自訂的圖片按鈕。
而ZoomButton從字面就可以看出來他是個放大/縮小功能的按鈕,它繼承自ImageButton,使用方法也基本類似於ImageButton,android預設提供了btn_minus、btn_plus兩個Drawable資源,只要給src屬性賦這兩個資源值,即可實現對應的按鈕樣式。
Android還提供一個ZoomControls組件,該組件相當於組合了“放大”,“縮小”兩個按鈕,並允許分別為他們綁定不同的監聽器。(ZoomButton是單個按鈕,ZoomControls是組合了兩個按鈕)。
下面的範例程式碼同時示範了這幾個組件。
說明如下:
1.第一個按鈕的src是btn_ok是藍色的按鈕表徵圖,我自己從網上下載的按鈕,這是個固定不變的按鈕表徵圖。
2.第二個按鈕是可變的按鈕,按鈕預設顯示是綠色,按下之後變成紅色,鬆開後變成綠色,使用了selector資源檔定義,下面會貼出代碼。
3.使用LinearLayout線性布局,內容添加了連個ZoomButton,使用系統內建的放大縮小的表徵圖顯示,Linearlayout的布局設定為水平置中。
4.定義了一個ZoomControls組件,我們可以看到他自身就帶了兩個按鈕。
其中給出btn_Selector的代碼如下:
主要設定了按鈕獲得焦點時顯示的圖片和按下後顯示的圖片,最後一行設定預設顯示的圖片。
六、QuickContactBadge
QuickContactBadge繼承了ImageView,它的本質也是圖片,也可以通過android:src屬性指定它顯示的圖片。QuickContackBadge額外功能是:該圖片可以關聯到手機中指定連絡人,當使用者單擊該圖片時,系統將開啟相應的連絡人的連絡方式介面。
因為我這邊虛擬機器添加不上連絡人,所以這裡也不再單獨做代碼示範,給出幾個學習地址,參考學習一下。
1.Android2.2 API 中文文檔系列(8) —— QuickContactBadge
2.使用QuickContactBadge關聯連絡人
七、後記
因為工作的原因,學習也是斷斷續續,但是我想我也會鼓勵自己慢慢學下去,分享學習心得的同時也可以加深記憶。希望看完文章覺得對自己有用的朋友點個推薦給我一點鼓勵,謝謝大家。
Android開發自學筆記(Android Studio)—4.3ImageView及其子類