一、Drawable 簡介
Drawable 表示的是一種可以在 Canvas 上進行繪製的抽象概念 。它的種類有很多,最常見的顏色和圖片都可以是一個Drawable 。在實際開發中,Drawable 常被用來作為 View 的背景使用,Drawable 一般都是通過XML來定義的,當然,我們也可以通過程式碼來建立具體的Drawable 物件,只是使用程式碼建立相對來說稍顯複雜。
二、Drawable 的分類
Drawable 是一個抽象類,它的子類種類繁多,常見的有 BitmapDrawable、 ShapeDrawable 、LayerDrawable、StateListDrawable 等,這裡就不一一列舉了,後文會分別介紹他們的詳細使用,Drawable 詳細繼成關係如下:
三、BitmapDrawable
Bitmap,代表一個點陣圖影象,BitmapDrawable 它代表的就是一張圖片,在開發過程中,我們之間引用原始圖片即可,只是BitmapDrawable 可以設定更多的顯示效果,BitmapDrawable 對應< bitmap > 標籤,使用 XML定義如下:
<?xml version="1.0" encoding="utf-8"?>
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@[package:]drawable/drawable_resource"
android:antialias=["true" | "false"]
android:dither=["true" | "false"]
android:filter=["true" | "false"]
android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
"fill_vertical" | "center_horizontal" | "fill_horizontal" |
"center" | "fill" | "clip_vertical" | "clip_horizontal"]
android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"] />複製程式碼
各屬性的含義:
android:src
表示:這個比較簡單就是圖片的資源 ID(必填)
android:antialias
表示:是否開啟抗鋸齒功能( 預設值 true)(建議開啟)。
android:dither
表示:是否允許開啟抖動效果( 預設值 true)(建議開啟)。當點陣圖與螢幕的畫素配置不同時,開啟這個選項可以讓搞資料的圖片在低質量的螢幕上還能較好的顯示效果。(例如:一個點陣圖的畫素設定是 ARGB 8888,但螢幕的設定是RGB 565,如果不開啟抖動效果,圖片顯示就會失真)
android:filter
表示:是否允許對點陣圖進行濾波( 預設值 )(建議開啟)。對點陣圖進行收縮或者延展使用濾波可以獲得平滑的外觀效果。
android:gravity
表示:如果點陣圖小於其容器時,設定點陣圖顯示的位置(此選項可以同“ | ”來組合使用)。
android:tileMode
表示:平鋪模式。開啟改功能以後 android:gravity 屬性會失效。
- disabled :表示平鋪模式不可用 ( 預設值 )
- clamp :表示點陣圖周圍的畫素會擴充套件到周圍區域
- repeat :表示水平和豎直方向上的鋪平效果。
- mirror :表示水平和豎直方向上的鏡面投影效果
android:tileMode 圖文分析:
素材檔案:texture_item.png
clamp 模式:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/texture_item"
android:tileMode="clamp"
/>複製程式碼
repeat 模式:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/texture"
android:tileMode="repeat"
/>複製程式碼
mirror 模式:(說明:此處採用的是ic_launcher圖片作為 src)
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/ic_launcher"
android:tileMode="mirror"
/>複製程式碼