[Android]ImageView에서 svg 이미지를 표시할 때의 주의점

소개



ImageView에서 svg 이미지를 표시할 때의 주의점을 써 갑니다.
메모 쓰기이므로 참고 정도로 참조하십시오.

주의점이란?



ImageView를 사용하여 svg를 표시했을 때입니다.
Android5계에서 앱을 기동했을 때에 떨어지고,Android7계에서는 정상적으로 기동했습니다.

미리보기 화면



표시시키려고 한 svg는 아래와 같은 이미지(Android studio의 프리뷰 화면)의 시계와 맵의 아이콘입니다.


개발 환경




터미널 이름
OS


Huawei nove lite
OS7

Asus Zenfone2
OS5


오류 코드



로그에는 아래와 같이 ImageView가 error의 원인이라고 가르쳐 줍니다.
로그를 따라가면 xml을 읽는 데 오류가 발생했습니다.
게다가 xml의 ImageView를 코멘트 아웃하면 양 단말에서 표시하고있었습니다.

error.log
android.view.InflateException: Binary XML file line #68: Error inflating class ImageView
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:763)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
    at keiba.japan.forest.net.japankeiba.activity.ui.adapter.SampleRecyclerAdapter.onCreateViewHolder(SampleRecyclerAdapter.java:60) 
    at keiba.japan.forest.net.japankeiba.activity.ui.adapter.SampleRecyclerAdapter.onCreateViewHolder(SampleRecyclerAdapter.java:22)
    at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:6367)

main.xml
    <ImageView
        android:src="@drawable/ic_map_black_24px" // svg画像
        android:layout_width="12dp"
        android:layout_height="12dp" />

리노베이션 방법



라이브러리를 사용하여 수정합니다.
제 경우에는 Google의 Support Library를 사용하여 svg를 표시했습니다.

main.xml
     <android.support.v7.widget.AppCompatImageView
        app:srcCompat="@drawable/ic_schedule_black_24px"
        android:layout_width="12dp"
        android:layout_height="12dp" />

소감



svg가 표시하지 않는 원인을 조사할 때
개발할 때는 「Support Library」를 사용해 코드의 통일을 하는 것이 보수성 등 생각해도 좋을지도

좋은 웹페이지 즐겨찾기