vectalign alternatives and similar packages
Based on the "Tools" category.
Alternatively, view vectalign alternatives based on common mentions on social networks and blogs.
-
Freeline
A super fast build tool for Android, an alternative to Instant Run -
dex-method-counts
Command-line tool to count per-package methods in Android .dex files -
scalpel
A surgical debugging tool to uncover the layers under your app. -
maven-android-sdk-deployer
A tool to install components of the Android SDK into a Maven repository or repository manager to use with the Android Maven Plugin, Gradle and other tools. -
AdaptiveTableLayout
Library that makes it possible to read, edit and write CSV files -
android-resource-remover
A simple utility to remove unused resources in your Android app to lower the size of the APK. It's based on the Android lint tool output. -
Uber Apk Signer
A cli tool that helps signing and zip aligning single or multiple Android application packages (APKs) with either debug or provided release certificates. It supports v1, v2 and v3 Android signing scheme has an embedded debug keystore and auto verifies after signing. -
AndroidLocalizationer
This is a Android Studio/ IntelliJ IDEA plugin to localize your Android app, translate your string resources automactically. -
Debug Bottle
🍼Debug Bottle is an Android runtime debug / develop tools written using kotlin language. -
scrollscreenshot
Make Android screenshots of scrollable screen content -
Let
Annotation based simple API flavored with AOP to handle new Android runtime permission model -
android-gradle-template
Combines tools for fast android app devlopment -
PDFCreatorAndroid
Simple library to generate and view PDF in Android -
density-converter
A multi platform image density converting tool converting single or batches of images to Android, iOS, Windows or CSS specific formats and density versions given the source scale factor or width/height in dp. It has a graphical and command line interface and supports many image types (svg, psd, 9-patch, etc.) aswell as some lossless compressors like pngcrush. -
USB-Device-Info
This application will provide information about almost all currently plugged-in USB devices. -
TaggerString
TaggerString is very light library which allows to build dynamic string resource in much more readable way. -
release-android-library
Remote script to create a maven compatible release of an android library (aar) -
Layout-to-Image
Android Layout (Relative Layout, Linear Layout etc) to Image -
NotificationLog
Use an expanded notification as a makeshift Android log output console -
PackageHunter
:inbox_tray: [Android Library] Hunt down all package information -
Uber Adb Tools for Android
A tool that enables advanced features through adb installing and uninstalling apps like wildcards and multi device support. Useful if you want to clean your test device from all company apks or install a lot of apks in one go. Written in Java so it should run on your platform. -
Java7-on-Android
Java 7 features backported to Android 2.2+ -
Shutdown
An android library that handles the closing of your app interactively. -
Android-Intent-Library
A library which will save you a lot of time from writing the same intent creation code. it consist of many intent creation codes like Share, Contacts, Email and etc, which you can easily use. -
AnUitor
AnUitor is a result of my rebranding experiences of one android app. -
IntroApp
This Android app adds splash screen slides to make a great intro for an app. -
open-weather-retriever-z
A wrapper that gets weather information from OpenWeatherMap -
change-scene
Switch between different layouts for different states, easily. -
gplay.ws
create a badge to promote your own Android application in a single step
Appwrite - The Open Source Firebase alternative introduces iOS support
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of vectalign or a related project?
README
VectAlign

VectAlign (a.k.a. VectorDrawableAlign) is a developer's tool which automagically aligns two VectorDrawable
"pathData" strings (or SVG images) in order to allow morphing animations between them using an AnimatedVectorDrawable
. VectAlign can be used from command line or through a simple GUI (which includes morphing preview and export functionalities).
Here are some examples of what you can do with the help of VectAlign (take a look at the sample project for a live demo):
The problem
As stated in the official docs two paths must be compatible so that they can be morphed, which means that the paths must be composed by the same list of SVG commands (in terms of length and type of commands).
Example of compatible paths:
M 10,10 L 40,10 L 40,40 L 10,40 Z
M 25,10 L 40,25 L 25,40 L 10,25 Z
Example of incompatible paths:
M 10,10 L 40,10 L 40,40 L 10,40 Z
M 30,30 L 10,10 C 14,25 20,30 10,49 L 3,3 L 0,8 Z
Creating an AnimatedVectorDrawable
containing morphing animations which use incompatible paths leads to runtime exceptions like the following:
android.view.InflateException: Binary XML file line #3 Can't morph from M 10,10 L 40,10 L 40,40 L 10,40 Z to M 30,30 L 10,10 C 14,25 20,30 10,49 L 3,3 L 0,8 Z
at android.animation.AnimatorInflater.setupAnimatorForPath(AnimatorInflater.java:337)
at android.animation.AnimatorInflater.parseAnimatorFromTypeArray(AnimatorInflater.java:283)
...
When the morphing involves only simple shapes is averagely simple to fix the paths by manually injecting or duplicating commands here and there; but when the complexity of the shapes grows, this task becomes quite tedious to do by hand (sometimes almost impossible). VectAlign automagically aligns any pair of SVG paths (regardless of their complexity), creating a new pair of morphable paths without altering the original images.
Download
You can download the latest version of the pre-compiled jar from here.
Changelog
v0.2
- added different morphing strategies (BASE, LINEAR, SUB_BASE, SUB_LINEAR)
- added GUI (view, load and edit SVG/pathData, morphing preview)
- added export function (automatically creates all the Android XML resources required)
v0.1
- first public release of VectAlign (command line only)
Usage
Run VectAlign from command line by passing the two paths that you want to use in your morphing animation; you can pass these sequences by typing them directly or by referring a file (a simple txt file or even a standard SVG image); simply pass no params if you want to start the GUI:
Examples of execution
Run VectAlign in GUI mode:
java -jar vectalign.jar
java -jar vectalign.jar --gui
Run VectAlign in command line mode:
java -jar vectalign.jar --start "M 10,20..." --end "M 30,30..."
java -jar vectalign.jar --start image1.svg --end image2.svg
The result represents the aligned (and compatible) version of the input paths/images: these new paths can be finally morphed using an AnimatedVectorDrawable
without incurring in the "Can't morph from X to Y" exceptions:
Example of output
--------------------
ALIGNMENT RESULT
--------------------
# new START sequence:
M 48.0,54.0 L 31.0,42.0 L 15.0,54.0 L 21.0,35.0 L 6.0,23.0 L 25.0,23.0 L 25.0,23.0 L 25.0,23.0 L 25.0,23.0 L 32.0,4.0 L 40.0,23.0 L 58.0,23.0 L 42.0,35.0 L 48.0,54.0
# new END sequence:
M 48.0,54.0 L 48.0,54.0 L 48.0,54.0 L 48.0,54.0 L 31.0,54.0 L 15.0,54.0 L 10.0,35.0 L 6.0,23.0 L 25.0,10.0 L 32.0,4.0 L 40.0,10.0 L 58.0,23.0 L 54.0,35.0 L 48.0,54.0
Available options
usage: java -jar vectalign.jar [-g] [-s <"string"|txt_file|svg_file>] [-e <"string"|txt_file|svg_file>] [-m <BASE|LINEAR|SUB_BASE|SUB_LINEAR>] [-v] [-h]
Align two VectorDrawable paths in order to allow morphing animations
between them.
-g,--gui Start VectAlign GUI
-s,--start <"string"|txt_file|svg_file> Starting VectorDrawable
path ("string", txt file or
SVG file)
-e,--end <"string"|txt_file|svg_file> Ending VectorDrawable path
("string", txt file or SVG
file)
-m,--mode <BASE|LINEAR|SUB_BASE|SUB_LINEAR> Aligning technique (default
is BASE)
-v,--version Print the version of the
application
-h,--help
How it works
VectAlign is based on an adaptation of the Needleman-Wunsch algorithm, which is used in bioinformatics to align protein or nucleotide sequences.
Notes and known issues
- This is an experimental tool which faces a complex task. Result's quality may vary depending on the inputs; thus, wow effect of the resulting animation is not guaranteed.
- Aligning complex shapes may create visual artifacts on one or both images; in this case, try to simplify the original SVG path (e.g. using InkScape) and then run VectAlign again (see also the Tips section).
- When referring a SVG file, all the path groups which compose the image will be merged in one single path.
- If your SVG path is too much complex the system renderer will throw a silent exception: "OpenGLRenderer﹕ Path too large to be rendered into a texture"; in this case you need to simplify your image further.
Tips
- When morphing complex aligned paths, for best result avoid using the
fillColor
attribute in yourVectorDrawable
and use thestrokeColor
only. This because filled surfaces are more likely to be affected by artifacts than the stroke-only ones and usually provide less gorgeous morphing effects. - As general rule, similar images (in terms of SVG complexity) morph better than very different ones.
- If you don't like the result of a morphing, try to alter the original images by simplifying the SVG path (e.g. using InkScape) and then run VectAlign again.
- Since AnimatedVectorDrawable is API 21+ you can use the vector-compat library to extend support down to API 14+.
References
- DevBytes: Android Vector Graphics
- AnimatedVectorDrawable
- VectorDrawable
- VectorDrawableCompat on support library v7 (partial)
- SVG Paths Specification
License
Copyright 2015, Stefano Bonetta.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*Note that all licence references and agreements mentioned in the vectalign README section above
are relevant to that project's source code only.