Android-Working with Vector Drawable (Part 2)

In our previous tutorial , we have discussed  what is a Vector, what is VectorDrawable , difference between svg and Vector and different ways to convert svg images to vectorDrawable.This tutorial will be mainly focused on how to support VectorDrawable on preLollipop android devices.

**Introduction : **Previously , vectors were not supported on pre-lollipop android devices, but using support lib 23.2.0 and above, we can easily use on devices running Android 2.1 and above.Two new vector classes were introduced with this support lib :

  1. VectorDrawableCompat

  2. AnimatedVectorDrawableCompat ( Can be used only for API 11 and above )

 

How to use ?

**a ) Enabling vectorDrawable  flag on build.gradle : **First, check your Gradle plugin version on Android Studio : (Go to File -> Project Structure -> Project ) if you are using Gradle plugin v2.0 or above, make the following changes to build.gradle file :

    defaultConfig { 
        vectorDrawables.useSupportLibrary = true 
    }
}

else ,

android {
    defaultConfig {
    // Stops the Gradle plugin's automatic rasterization of vectors
        generatedDensities = [] 
    }
       
    // Flag to tell aapt to keep the attribute ids around
    aaptOptions {
        additionalParameters "--no-version-vectors" 
    }
}

Using Vectors on App ?

One thing you should keep in mind that VectorDrawableCompat is only used for API 20 and below. For API 21 and above devices, default VectorDrawable class will be used.

So , how to use vector images ? Simple..just use app:srcCompat attribute inside ImageView.

android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@null"
app:srcCompat="@drawable/legoman" />

Note : we can use app:srcCompat for nonvector images also.

b) During runtime :

ImageView iv = (ImageView) findViewById(...);
iv.setImageResource(R.drawable.ic_search);

That’s it. following screenshots are one on Android device 2.3 and right one is on Android 5.

  vector_2.3 vector_5

This project is shared on Github. Clone it from here.