Backward Compatibility VectorDrawable and Installing Unofficial Support Libraries

Bear with me, I'm new!
I want to use vectors in my Android app, and I want my app to be backward compatible. I found this support library that looks pretty cool! *
Therefore, I am confused by the way I β€œinstall it”. It gives you a link to download .pom, .aar, javadoc.jar and sources.jar file. Which one should I download, and where (which folder) should I put the file?
(I am using Android Studio!)
* (Does anyone know another VectorDrawable support library? I would be interested to hear how each of you knows!)

+5
source share
4 answers

Here is the option that worked for me Use this library - https://github.com/wnafee/vector-compat (api 14 +)

android { // use version 22 or higher buildToolsVersion "22.0.1" ... } dependencies { compile 'com.wnafee:vector-compat:1.0.5' ... } 

And create your own ImageView class that uses the vector compatibility class -

 public class SvgImageView extends ImageView { private Drawable icon; public SvgImageView(Context context, AttributeSet attrs) { super(context, attrs); TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.button_left, 0, 0); try { int resId = ta.getResourceId(R.styleable.button_left_b_icon, -1); if (resId != -1) { icon = ResourcesCompat.getDrawable(this.getContext(), resId); } } finally { ta.recycle(); } if (icon != null) { setImage(icon); } } public void setImage(Drawable icon) { SvgImageView.this.setImageDrawable(icon); } } 

Example Vector Image -

 <?xml version="1.0" encoding="utf-8"?> <vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:width="@dimen/logo_dimen" android:height="@dimen/logo_dimen" android:viewportWidth="@integer/view_port_dimen_logo" android:viewportHeight="@integer/view_port_dimen_logo" app:vc_viewportWidth="@integer/view_port_dimen_logo" app:vc_viewportHeight="@integer/view_port_dimen_logo"> <group android:name="rotationGroup" android:pivotX="0" android:pivotY="0" android:rotation="0"> <path android:name="v" android:fillColor="@color/white" android:pathData="m15.5,15.6c0,-1.5 2.8,-1.9 2.8,-5c0,-1.5 -0.7,-2.6 -1.8,-3.5h1.6l1.7,-1.1h-5c-1.7,0 -3.5,0.4 -4.8,1.6c-1,0.8 -1.6,2.1 -1.6,3.4c0,2.4 1.9,4.1 4.2,4.1c0.3,0 0.5,0 0.8,0c-0.1,0.3 -0.3,0.6 -0.3,1c0,0.7 0.3,1.2 0.8,1.8c-1.6,0.1 -3.4,0.3 -4.9,1.2c-1.1,0.7 -2,1.8 -2,3.2c0,0.6 0.2,1.1 0.4,1.6c1,1.7 3.2,2.2 5,2.2c2.3,0 4.9,-0.7 6.1,-2.8c0.4,-0.6 0.6,-1.3 0.6,-2.1c0.2,-3.5 -3.6,-4 -3.6,-5.6zm-1.7,-1.2c-2.2,0 -3.2,-2.8 -3.2,-4.6c0,-0.7 0.1,-1.4 0.6,-1.9c0.4,-0.6 1.1,-0.9 1.7,-0.9c2.2,0 3.2,3 3.2,4.8c0,0.7 -0.1,1.4 -0.6,1.9c-0.4,0.4 -1.1,0.7 -1.7,0.7zm0,10.5c-1.9,0 -4.5,-0.8 -4.5,-3.2c0,-2.5 2.9,-3.1 4.9,-3.1c0.2,0 0.4,0 0.6,0c1.2,0.8 2.8,1.8 2.8,3.4c-0.1,2.2 -2,2.9 -3.8,2.9zm9.7,-10.5v-2.6h-1.3v2.6h-2.5v1.3h2.5v2.6h1.3v-2.6h2.6v-1.3h-2.6l0,0z" app:vc_fillColor="@color/white" app:vc_pathData="m15.5,15.6c0,-1.5 2.8,-1.9 2.8,-5c0,-1.5 -0.7,-2.6 -1.8,-3.5h1.6l1.7,-1.1h-5c-1.7,0 -3.5,0.4 -4.8,1.6c-1,0.8 -1.6,2.1 -1.6,3.4c0,2.4 1.9,4.1 4.2,4.1c0.3,0 0.5,0 0.8,0c-0.1,0.3 -0.3,0.6 -0.3,1c0,0.7 0.3,1.2 0.8,1.8c-1.6,0.1 -3.4,0.3 -4.9,1.2c-1.1,0.7 -2,1.8 -2,3.2c0,0.6 0.2,1.1 0.4,1.6c1,1.7 3.2,2.2 5,2.2c2.3,0 4.9,-0.7 6.1,-2.8c0.4,-0.6 0.6,-1.3 0.6,-2.1c0.2,-3.5 -3.6,-4 -3.6,-5.6zm-1.7,-1.2c-2.2,0 -3.2,-2.8 -3.2,-4.6c0,-0.7 0.1,-1.4 0.6,-1.9c0.4,-0.6 1.1,-0.9 1.7,-0.9c2.2,0 3.2,3 3.2,4.8c0,0.7 -0.1,1.4 -0.6,1.9c-0.4,0.4 -1.1,0.7 -1.7,0.7zm0,10.5c-1.9,0 -4.5,-0.8 -4.5,-3.2c0,-2.5 2.9,-3.1 4.9,-3.1c0.2,0 0.4,0 0.6,0c1.2,0.8 2.8,1.8 2.8,3.4c-0.1,2.2 -2,2.9 -3.8,2.9zm9.7,-10.5v-2.6h-1.3v2.6h-2.5v1.3h2.5v2.6h1.3v-2.6h2.6v-1.3h-2.6l0,0z" /> </group> </vector> 

Example -

 <packagename.SvgImageView app:b_icon="@drawable/google_logo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView3" /> 
+7
source

Google just announced Android Studio 1.4 with backward compatibility for Vector Drawables. It will generate .png files in appropriate sizes for different screen densities for devices with advanced Lollipop and will use the vector format for Lollipop and up. See this link: http://android-developers.blogspot.com/2015/09/android-studio-14.html

Just make sure your version of Gradle Build is 1.4.0 or higher!

+4
source

Thanks for the people who ported this library to Google!

The great news is that google has released Android Support Library 23.2 Support for vector drawings and animated vector drawings!

Note:

- Vector images completely back to API 7 (Android 2.1 Eclair).

- Animated vectors are a bit more limited, and only in 11 APIs

+4
source

The best solution I've found is the BetterVectorDrawable library along with the SVG to VectorDrawable converter .

BetterVectorDrawable is an implementation of VectorDrawable for Android 4. 0+ with a custom rollback mode on Android 5. 0+. A library can be added to a project with just one line (see Readme).

SVG to VectorDrawable Converter is a batch converter of SVG images to XML VectorDrawable Android resource files. The online version is here .

The links point to readmes, which provide enough information on how to use lib and converter.

+2
source

All Articles