Skip to content

telly/MrVector

Repository files navigation

###@Deprecated Unfortunatenly this library is no longer maintained, we encourage you to use first party VectorDrawableCompat coming soon to support library.

Mr. Vector

Mr. Vector

AKA VectorDrawableCompat: A 7+ backport of VectorDrawable.

Demo

Le demo

Mr. Vector Demo on Google Play Store

Usage

See demo, at this point latest version looks like

compile 'com.telly:mrvector:0.2.0'

Basic inflate

Drawable drawable = MrVector.inflate(getResources(), R.drawable.vector_android);

Unfortunately due some inflate weirdness (able to read some correctly but not others) for now (will fix promise) you'll have to duplicate (sucks I know) all your android: attributes, in example:

Note: you must put auto attributes before android attributes (See #5)

Furthermore: you can use online convertor svg to VectorDrawable + MrVector scheme support

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:auto="http://schemas.android.com/apk/res-auto"
        tools:targetApi="21"

        auto:width="@dimen/simple_vector_width"
        auto:height="@dimen/simple_vector_height"
        auto:viewportWidth="@integer/simple_vector_viewport_width"
        auto:viewportHeight="@integer/simple_vector_viewport_height"

        android:width="@dimen/simple_vector_width"
        android:height="@dimen/simple_vector_height"
        android:viewportWidth="@integer/simple_vector_viewport_width"
        android:viewportHeight="@integer/simple_vector_viewport_height"
    >

  <path
      auto:strokeColor="@color/simple_vector_stroke_color"
      auto:strokeWidth="@integer/simple_vector_stroke_width"
      auto:pathData="@string/simple_vector_path_data"

      android:strokeColor="@color/simple_vector_stroke_color"
      android:strokeWidth="@integer/simple_vector_stroke_width"
      android:pathData="@string/simple_vector_path_data"
      />
</vector>

Inflate from Layout (WIP)

Use it as a regular drawable:

<!-- menu.xml -->
<!-- ... -->
   android:icon="@drawable/vector_drawable"
<!-- ... -->
<!-- layout.xml -->
<!-- ... -->
   android:src="@drawable/vector_drawable"
<!-- ... -->

And then from your Application or Activity:

\\ ...
  {{
    MrVector.register(
      R.drawable.vector_drawable,
      R.drawable.another_vector_drawable,
      \\ ...
    );
  }}
\\ ...
  @Override
  protected void attachBaseContext(Context newBase) {
    super.attachBaseContext(MrVector.wrap(newBase));
  }
\\ ...

Roadmap

Right now only basic inflating works, this is the list of features planed:

  • Put this in GH issues.
  • Full inflate from layout support (partially implemented except for TypedArray calling directly loadDrawable, which sadly is key)
  • Get rid of auto namespace, use android namespace as much as possible (no duplicated attributes).
  • Tint support.
  • Animation support (AnimatedVectorDrawable).

On the long run, it would be nice to see (but no promises):

  • Per node animation.
  • Additional SVG support (e.g. using svg-android or svgandroid).
  • SVG animation support.

###Applications using Mr.Vector:

WatchMe

License & About

See LICENSE file, logo built from opoloo/androidicons.

From @eveliotc @ Telly