MrVector

General

Category
Free
Tag
Drawables
License
N/A
Min SDK
14 (Android 4.0–4.0.2 Ice Cream Sandwich)
Registered
Dec 24, 2014
Favorites
1
Link
https://github.com/telly/MrVector
See also
BarrierTape
RevelyGradient
Slice
SelectorDrawable
Proteus

Additional

Language
Java
Version
v0.2.0 (Dec 30, 2014)
Created
Dec 23, 2014
Updated
Apr 24, 2018 (Retired)
Owner
Telly (telly)
Contributors
Ozodrukh (ozodrukh)
Evelio Tarazona (eveliotc)
2
Activity
Badge
Generate
Download
Source code

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

Mr. Vector

AKA VectorDrawableCompat: A 7+ backport of VectorDrawable.

Demo

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