Android三種方式生成矢量圖之VectorDrawable類使用詳解
生成矢量圖VectorDrawable的三種方式
- 第一種:
選中drawable文件夾,右鍵New --> Vector Asset --> 選中Clip Art ,在這里面可以選擇一些矢量圖 ,點(diǎn)擊Next,然后 Finish即可。
- 第二種:(前提:自己有一張svg或psd的圖片)
選中drawable文件夾,右鍵New --> Vector Asset --> 選中Local file ,在這里面選擇自己svg路徑 ,點(diǎn)擊Next,然后 Finish即可。
- 第三種:
自己編寫代碼
靜態(tài)VectorDrawable的使用
配置引用和參數(shù)
gradle文件種按下面配置:
android {
defaultConfig {
...
vectorDrawables.useSupportLibrary = true
}...
dependencies {
...implementation 'com.android.support:appcompat-v7:23.4.0'
}
注意:support:appcompat 必須在23.2以上的引用
在控件中使用
ImageView\ImageButtom
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_aaa"
/>

既然這樣可以顯示,那我們?nèi)绶ㄅ谥疲O(shè)置在Button上面會(huì)怎么樣呢?
<Button
android:layout_width="100dp"
android:layout_height="100dp"
app:srcCompat="@drawable/ic_aaa"
/>

結(jié)果超出我們的想象,并不能達(dá)到我們預(yù)期的效果。原因是:Button是一個(gè)有不同狀態(tài)的控件,為了程序的嚴(yán)謹(jǐn)性,所以無效。
那我們對(duì)他的每一個(gè)狀態(tài)進(jìn)行設(shè)置,可不可行呢?
在drawable文件夾下新建xml文件,名為demo
demo代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_aaa" android:state_pressed="true"/>
<item android:drawable="@drawable/ic_bubble_chart_black_24dp"/>
</selector>
然后在Button里面引用:
<Button
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@drawable/demo"
/>
然后運(yùn)行:
原始狀態(tài):

按下狀態(tài):

ok,這就大功告成了。
這里要說明的一點(diǎn),我這邊呢,使用的Android Studio是目前最新的3.6.3,如果AndroidStudio版本較低的話,可能會(huì)出現(xiàn)閃退的現(xiàn)象。這是VectorDrawable的一個(gè)坑點(diǎn)。
解決方法:在相對(duì)應(yīng)的Activity中加入以下代碼即可
static{
AppCompatDelegate
.setCompatVectorFromResourcesEnabled(true);
}
此篇結(jié)束,下篇文章將繼續(xù)講解Android中使用動(dòng)態(tài)的VectorDrawable
到此這篇關(guān)于Android三種方式生成矢量圖之VectorDrawable類使用詳解的文章就介紹到這了,更多相關(guān)Android VectorDrawable內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android數(shù)據(jù)存儲(chǔ)之SQLite使用
SQLite是D.Richard Hipp用C語言編寫的開源嵌入式數(shù)據(jù)庫(kù)引擎。它支持大多數(shù)的SQL92標(biāo)準(zhǔn),并且可以在所有主要的操作系統(tǒng)上運(yùn)行2016-01-01
基于barcodescanner實(shí)現(xiàn)Android二維碼掃描功能
這篇文章主要為大家詳細(xì)介紹了基于barcodescanner實(shí)現(xiàn)Android二維碼掃描功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
從源碼編譯Android系統(tǒng)的Java類庫(kù)和JNI動(dòng)態(tài)庫(kù)的方法
這篇文章主要介紹了從源碼編譯Android系統(tǒng)的Java類庫(kù)和JNI動(dòng)態(tài)庫(kù)的方法,例子基于Linux系統(tǒng)環(huán)境下來講,需要的朋友可以參考下2016-02-02
Android使用AudioRecord實(shí)現(xiàn)暫停錄音功能實(shí)例代碼
本篇文章主要介紹了Android使用AudioRecord實(shí)現(xiàn)暫停錄音功能實(shí)例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下2017-06-06
詳解Flutter如何在單個(gè)屏幕上實(shí)現(xiàn)多個(gè)列表
這篇文章主要為大家詳細(xì)介紹了Flutter如何在單個(gè)屏幕上實(shí)現(xiàn)多個(gè)列表,這些列表可以水平排列、網(wǎng)格格式、垂直排列,甚至是這些常用布局的組合,感興趣的小伙伴可以了解下2023-11-11
Flutter 封裝一個(gè) Banner 輪播圖效果的實(shí)例代碼
這篇文章主要介紹了Flutter 封裝一個(gè) Banner 輪播圖效果,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07
Android App中ListView仿QQ實(shí)現(xiàn)滑動(dòng)刪除效果的要點(diǎn)解析
這篇文章主要介紹了Android App中ListView仿QQ實(shí)現(xiàn)滑動(dòng)刪除效果的要點(diǎn)解析,重點(diǎn)是要判斷手勢(shì)按下的位置坐標(biāo),需要的朋友可以參考下2016-04-04
Material Design系列之Behavior實(shí)現(xiàn)支付密碼彈窗和商品屬性選擇效果
這篇文章主要為大家詳細(xì)介紹了Material Design系列之Behavior實(shí)現(xiàn)支付密碼彈窗和商品屬性選擇效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09

