Android三種方式生成矢量圖之VectorDrawable類使用詳解
生成矢量圖VectorDrawable的三種方式
- 第一種:
選中drawable文件夾,右鍵New --> Vector Asset --> 選中Clip Art ,在這里面可以選擇一些矢量圖 ,點擊Next,然后 Finish即可。
- 第二種:(前提:自己有一張svg或psd的圖片)
選中drawable文件夾,右鍵New --> Vector Asset --> 選中Local file ,在這里面選擇自己svg路徑 ,點擊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上面會怎么樣呢?
<Button
android:layout_width="100dp"
android:layout_height="100dp"
app:srcCompat="@drawable/ic_aaa"
/>

結(jié)果超出我們的想象,并不能達(dá)到我們預(yù)期的效果。原因是:Button是一個有不同狀態(tài)的控件,為了程序的嚴(yán)謹(jǐn)性,所以無效。
那我們對他的每一個狀態(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,這就大功告成了。
這里要說明的一點,我這邊呢,使用的Android Studio是目前最新的3.6.3,如果AndroidStudio版本較低的話,可能會出現(xiàn)閃退的現(xiàn)象。這是VectorDrawable的一個坑點。
解決方法:在相對應(yīng)的Activity中加入以下代碼即可
static{
AppCompatDelegate
.setCompatVectorFromResourcesEnabled(true);
}
此篇結(jié)束,下篇文章將繼續(xù)講解Android中使用動態(tài)的VectorDrawable
到此這篇關(guān)于Android三種方式生成矢量圖之VectorDrawable類使用詳解的文章就介紹到這了,更多相關(guān)Android VectorDrawable內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于barcodescanner實現(xiàn)Android二維碼掃描功能
這篇文章主要為大家詳細(xì)介紹了基于barcodescanner實現(xiàn)Android二維碼掃描功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
從源碼編譯Android系統(tǒng)的Java類庫和JNI動態(tài)庫的方法
這篇文章主要介紹了從源碼編譯Android系統(tǒng)的Java類庫和JNI動態(tài)庫的方法,例子基于Linux系統(tǒng)環(huán)境下來講,需要的朋友可以參考下2016-02-02
Android使用AudioRecord實現(xiàn)暫停錄音功能實例代碼
本篇文章主要介紹了Android使用AudioRecord實現(xiàn)暫停錄音功能實例代碼,具有一定的參考價值,有興趣的可以了解一下2017-06-06
Flutter 封裝一個 Banner 輪播圖效果的實例代碼
這篇文章主要介紹了Flutter 封裝一個 Banner 輪播圖效果,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-07-07
Android App中ListView仿QQ實現(xiàn)滑動刪除效果的要點解析
這篇文章主要介紹了Android App中ListView仿QQ實現(xiàn)滑動刪除效果的要點解析,重點是要判斷手勢按下的位置坐標(biāo),需要的朋友可以參考下2016-04-04
Material Design系列之Behavior實現(xiàn)支付密碼彈窗和商品屬性選擇效果
這篇文章主要為大家詳細(xì)介紹了Material Design系列之Behavior實現(xiàn)支付密碼彈窗和商品屬性選擇效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-09-09

