一応自分で試して対応は確認できたが採用はしていない。以下は必要になった場合に備えての記録。
課題
4系端末でもSVG画像を使いたいが上手く表示されなかったりアプリが落ちたりする。
どうすればよいか。
対応
参考URLの記事を読めば全て書いてあるが、
いくつかの専用の記述が必要となる。
app/build.gradle
vectorDrawablesではuseSupportLibraryを使うよと宣言
android { defaultConfig { vectorDrawables.useSupportLibrary = true } }
ImageView
app:srcCompatをに指定する。
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" app:srcCompat="@drawable/ic_search"/>
ImageView以外で使う場合
Vectorを読み込めるようにするために
ApplicationクラスまたはトップのActivityなどに以下を記述する。
static {
AppCompatDelegate.setCompatVectorFromSourcesEnabled(true);
}
また直接Vectorを指定できないので別なLayerListやInsetDarwable, SelectorなどのDrawableを経由する必要がある
<selector xmlns:android="..."> <item android:drawable="@drawable/ic_search" /> </selector>
状態を持たなくてもいいのでとりあえず1つだけセレクターを挟む。