ImageView在官方的介紹上說是顯示任意圖像,如圖標。ImageView類能夠從各類來源(如資源或內容提供程序)加載圖像,負責從圖像中計算其度量,以即可以在任何佈局管理器中使用,並提供各類顯示選項,如縮放和着色。html
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@mipmap/icon_check"/>
複製代碼
public class MainActivity extends RxAppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView imageView = (ImageView) findViewById(R.id.image);
}
}
複製代碼
ImageView view = new ImageView(this);
複製代碼
相關方法:setAdjustViewBounds(boolean) 官方解釋:經過調整ImageView的界限來保持圖片的寬高比例android
adjustViewBounds參數默認爲false,當咱們須要使用它的時候將其設置爲true,其scaleType自動爲「fitCenter」(當scaleType與adjustViewBounds同時在xml中設置後,若是設置了scaleType,則由adjustViewBounds自動設置的scaleType將失效,由於scaleType優先級比adjustViewBounds高),而且會根據當前View的最大寬高來填充View的內容,而且須要配合上maxHeight與maxWidth一塊兒使用纔會有效,由於其須要一個ImageView的界限bash
<ImageView
android:id="@+id/image"
android:maxHeight="30dp"
android:maxWidth="30dp"
android:adjustViewBounds="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@mipmap/icon_check"/>
複製代碼
相關方法:setBaseline(int) 官方解釋:視圖中基線的偏移量。ide
baseline默認爲-1,此時基線處於ImageView的頂部,當經過setBaseLine設置偏移量爲正數時表明視圖的基線向下偏移,爲負數時向上偏移,下面咱們能夠經過代碼與圖片的結合清楚的瞭解那條基線的位置(當baseline與baselineAlignBottom同時存在一個視圖中時,基線以設置了baselineAlignBottom爲主)佈局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
>
<TextView
android:text="你好"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ImageView
android:baseline="50dp"
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"/>
</LinearLayout>
複製代碼
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
>
<TextView
android:text="你好"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ImageView
android:baseline="-50dp"
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"/>
</LinearLayout>
複製代碼
3. 不設置偏移量
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
>
<TextView
android:text="你好"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"/>
</LinearLayout>
複製代碼
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="你好"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ImageView
android:baselineAlignBottom="true"
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"/>
</LinearLayout>
複製代碼
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="你好"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ImageView
android:paddingLeft="-20dp"
android:cropToPadding="true"
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"/>
</LinearLayout>
複製代碼
圖片居中展現,若是圖片大與控件大小,則以中心爲基準展現ImageView控件大小,圖片多出的部分裁剪不展現,若是圖片小於控件大小,則所有展現,其他地方留白ui
圖片進行等比的縮放或拉伸,直到有寬或高有一方可以等於控件的寬高,多餘的不展現this
將圖片進行等比縮放,完整的展現在ImageView上,沒有鋪張到的地方顯示背景色留白spa
默認模式,圖片將進行等比縮放或放大,完整的展現在ImageView上,而且沒有鋪張到的地方顯示背景色。這裏與CENTER_INSIDE有點相似,區別在於當同時都是小圖片的時候,FIT_CENTER會在小圖片的時候將圖片拉伸至控件大小,而CENTER_INSIDE則只會居中顯示,不拉伸翻譯
圖片進行等比縮放或放大,完整的展現在ImageView上,這一點和FIT_CENTER類似,不一樣點在於FIT_START是以左上爲基準,當寬完整平鋪展現而且高會有留白後,圖片將在控件的上方,下方留白,若是高平鋪展現,寬有留白時,則右邊留白3d
圖片進行等比縮放或放大,完整展現在ImageView上,與FIT_START效果相反
圖片進行縮放或放大(非等比),顯示在ImageView上,這裏不是等比縮放或放大,會將圖片完整的展現在ImageView上,通常來講圖片寬高比和控件寬高比不一致的狀況下,圖片會呈現扭曲感
指定一種矩陣,由於其餘七種都是內部已經寫好了矩陣,這一種爲本身指定一種矩陣,配合setImageMatrix()方法使用 快速記憶:其中CENTER,CENTER_CROP,CENTER_INSIDE共性:居中顯示,FIT_CENTER,FIT_END,FIT_START,FIT_XY共性:對圖片進行縮放,MATRIX指定矩陣
ImageViewButton是一個相似Button的圖像按鈕
<ImageButton
android:id="@+id/imageview"
android:src="@drawable/bottom_line_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
複製代碼
bottom_line_style.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/button_pressed" /> <!-- pressed -->
<item android:state_focused="true"
android:drawable="@drawable/button_focused" /> <!-- focused -->
<item android:drawable="@drawable/button_normal" /> <!-- default -->
</selector>
複製代碼
用於顯示具備標準QuickContact徽章和單擊行爲的圖像的小部件 該方法如今用的很少了,參考文章:QuickContactBadge
能夠染色的ImageView,實現了TintableBackgroundView與TintableImageSourceView兩個接口,用做對背景顏色進行動態改變,該ImageView在5.0如下的系統容易出現問題,較難排查,不建議使用
注:在高版本中還有一些其餘的子類,可是不常見,因此沒有例舉
ImageView的ScaleType原理及效果分析 :www.jianshu.com/p/fe5d2e3fe… ImageView的ScaleType詳解 :www.cnblogs.com/pandapan/p/… Android中ImageView的ColorFilter圖像處理解析 :www.jianshu.com/p/bbc77334b… 關於圓角ImageView的幾種實現方式 :www.jianshu.com/p/626dbd932…