Android 开发 VectorDrawable 矢量图 (一)了解Android矢量图与获取矢量图
簡述
Android應用的不斷發展帶來了安裝包過大的尷尬,而Android之前一直都不支持矢量圖形,是引起尷尬的一個重要原因。其實Android繪制界面時也是通過各種類似矢量圖形命令操作完成的,所以Android最終在Lolliop引入矢量圖形既是大勢所趨,也是水到渠成的一件事情。矢量圖有很多標準,Android支持的是SVG標準(可縮放矢量圖形Scalable Vector Graphics)。但不是全量支持,準確的說Android支持的是SVG標準中Path相關的部分。
SVG是通用的矢量圖標準,我們可以很輕易的從Photoshop之類的軟件導出想要的圖形。導出的文件后綴是*.svg,這個文件的內容是文本格式的,用txt文件查看就可以打開,其內部是一系列遵循SVG規范的命令列表。
關于版本兼容
因為谷歌是從5.0才開始支持VectorDrawable,那么如果是5.0以下的系統需要進行一些簡單的配置才可以加載靜態VectorDrawable資源
前提: gradle版本在1.2以上
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
然后我們要在加載這個布局的Activity中寫一個靜態代碼塊
static {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
獲取矢量圖的途徑
第一種:在Android studio上添加自帶的矢量圖:
第二種:在其他網站獲取矢量圖
http://www.flaticon.com/
http://www.iconfont.cn/collections/index?spm=a313x.7781069.1998910419.da2e3581b&type=1
第三種:位圖轉換矢量圖
Image Vectorizer 在線位圖轉換矢量圖簡單牛逼好用(png的圖片圖層,也可以很好的轉換,效果十分細膩)
第四種.自己畫,矢量圖在線編輯器
https://c.runoob.com/more/svgeditor/
轉化矢量圖
從網站或者其他來源獲取的矢量圖并不能直接兼容Android上的矢量圖,因為Android有自己的矢量圖格式
1.最推薦的,使用Android studio自帶的轉化工具
點擊 File > New > Vector Assets > 選擇界面上的 Local fiel(SVG, PSD) 在選擇自己的svg文件 > Next > 轉化成VectorDrawable xml文件
有可能出現的坑:
1.如果無法選擇svg文件,或者不識別svg文件.可能是你保存的svg文件類型不正確,在你下載svg圖的時候選擇保存格式為普通svg格式.
2.如果無法點擊Next,注意新的xml文件命名. 不能包含空格 和 中文.
2.將其他矢量圖格式轉換成為VectorDrawable xml文件
http://inloop.github.io/svg2android/
3.將svg代碼轉換成VectorDrawable代碼(可能已經失效)
http://oss.chengxingyao.cn/svg2android/index.html
配置矢量圖
將ImaveView配置矢量圖資源文件
<ImageView
android:layout_gravity="center_horizontal"
android:layout_width="35dp"
android:layout_height="40dp"
app:srcCompat="@drawable/ic_access_alarm_black_24dp"/>
那么這是靜態的組件我們這樣配置,srcCompat屬性是為了兼容低于5.0的版本使用矢量圖。但是,現在很多市面上低于5.0以下的手機很少了,也可以直接使用android:src屬性
給Button配置矢量圖資源我們需要通過selector來間接的完成~
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_access_alarm_black_24dp" android:state_pressed="true"/>
<item android:drawable="@drawable/ic_check_box_outline_blank_black_24dp" android:state_pressed="false"/>
</selector>
然后把這個selctor設置給button
<Button
android:layout_gravity="center_horizontal"
android:background="@drawable/bg_btn"
android:layout_width="50dp"
android:layout_height="50dp" />
總結
以上是生活随笔為你收集整理的Android 开发 VectorDrawable 矢量图 (一)了解Android矢量图与获取矢量图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: react-native中使用mobox
- 下一篇: 零下20℃充电比其他手机快10小时!一加