VectorDrawable
Vector Drawable是Google從Android 5.0開始引入的一個新的Drawable子類,能夠載入向量圖(低版本中需要做相容,如何相容低版本下文提及),android中vector Drawable通過配置xml再設定到要使用的控制元件上,不必進行多螢幕分別率適配,只需要建立一份,不需要通過解析度來設定不同的圖片,可以大幅減少影象的體積,vector Drawable有些類似svg檔案,但是Android中的Vector並不是支援全部的SVG語法
屬性說明
- width, height:圖片的寬高。可手動修改到需要尺寸;
- viewportHeight, viewportWidth:對應將上面height width等分的份數。以上圖為例,表示將長寬都為24dp的圖形均分為24x24的網格,在這個網格中就可以很方便地描述點的座標,影象就是這些點連線起來構成的。
- fillColor:填充顏色。
- pathData:描述的網格中作畫的路徑。
相容處理
Vector Drawable是Android 5.0才提出的,所以對於低於5.0版本是需要做相容處理的,低版本做vector drawables相容實際上是在執行時將根據螢幕密度vector drawables轉化成bitmap
相容設定:
開啟app module的build.Gradle,在defaultConfig 新增:
gradle 版本低於 2.0
gradle 版本高於 2.0
新增appcompat的支援
實戰1:在控制元件中使用
ImageView通過設定src
通過Java程式碼設定src
使用vectordrawable設定background (包括TextView的CompoundDrawable)
不管是使用xml還是Java,都要求View是AppCompatView,而且vectorDrawable不能直接使用, 必須依附於StateListDrawable,InsetDrawable,LayerDrawable,LevelListDrawable,RotateDrawable這裡選擇selector再包一層使用,另外不能忘記在Activity設定 AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);(如上圖)
動態的SVG
svg動畫庫
github.com/geftimov/an…
svg獲取
通過iconfont網站
www.iconfont.cn/
使用系統的Material Icons.
svg神兵利器
- svg生成VectorDrawable程式碼
inloop.github.io/svg2android…
- png轉svg
使用軟體vector Megic
軟體下載地址:pan.baidu.com/s/1slblMDR
原始碼
參考:
www.androidhive.info/2017/02/and…
www.jianshu.com/p/e3614e7ab…
www.jianshu.com/p/0555b8c1d…