How to create my own Vector Drawble? (Android) - android

I need to use an icon of a contract on my app.
Usually, I'd create a new Vector Asset and lookup for an icon that might do the job.
Unfortunately, this time I couldn't find anything similar to my needs, so I want to create one!
I tried reading about the issue here but it wasn't really helpful.
can someone tell me how to do that and what is that pathData?
Thanks!

You can create vector assets from SVG sources. If you want to create your own icon, you should probably use a graphics program that can export drawings as SVG. Inkscape for example is free and available for a lot of platforms.
When you have the SVG file, in AndroidStudio select File -> New -> Vector Asset. In the upcoming dialog, select Asset Type 'Local file' and then pick/enter the path to your SVG.

You can download from the web / create by photoshop your own SVG files , once you have .svg file you can add it to your project by right click on app > new > Vector Asset > Local file (SVG,PSD) and use it as you normally use android:src="#drawable/ic_my_icon"
now a pathData is A path that represents the outline of a shape which can be filled or stroked. A path can also be used as a clipping path, to describe animation, or position text.
But for me what really did the job was just playing with the numbers of it and see the reaction of the actual path, what do i mean ?
Check out ShapeShifter and watch this video , drag some .svg files from the web and start playing with it , I'm sure you will get the idea .

Related

When i use .svg file "ERROR #<image> is not supported" in Android Studio

I want to create a Splash screen for my android application for this purpose i create ".svg" file by using three different ".png" images using Adobe XD. bust when i import ".svg" file through vector Asset it only show background of ".svg" image it does not show other images which i used to create this file for splash screen. I also used this http://inloop.github.io/svg2android/ to get proper ".xml" file and past it in drawable folder but still no change. I am attaching images of my error this is where error is shown
when i click on error foe more detail i I found this error
I want to use my app logo for splash screen "Please Help" me an tell me how to use logo on splash screen i just started android development.
Thankyou.
The Android Studio SVG importer only supports a subset of SVG. Remember that it is converting the SVG to a VectorDrawable. So only things that work in a VectorDrawable can be imported from the SVG. Basically that means you must stick to just the vector shapes - rectangles, ellipses, paths etc
See: Which SVG elements are supported by Android studio and which are not?
If your SVG only contains PNG images, then there is no point in using an SVG anyway. Just import your PNGs to your project and use an ImageView to display them.
If you really need to display an SVG. Then use a library that properly supports SVGs. Such as my one: AndroidSVG.

How to see a preview of custom vector asset (added by SVG format) in Android Studio?

I know i can use my own svg as icons by browsing them from the asset studio but it just show the name not the exact icon of the svg, i can't know just by name what that icon is look like , so can i view them while adding them to project like they are showing in below image?
I have many icon on my computer can i add them to that list , so that i can see them visually when i want to add a new vector asset.
I tend to think that it can be done because then icons which android asset studio is shows must be stored in a directory from where it pulls when when i open asset stdio , if i can add my svg to that directory then android studio may may also pull them too with default clip arts and they may also show up in asset studio, does anyone know what that directory is , or any other way of doing this.
Note android studio does not give such option via UI
When you add a new vector asset (assuming you've added it in the drawable directory), it gets added in the drawable directory.
It is generally saved by the name ic_thatSVGname. So it gets the prefix IC. So please browse in the drawable directory and you will find your vector asset.
Then double click on it so that it opens and you can see the preview on right side of the screen. It it doesn't, just click the PREVIEW button which also reside on the right side of the Android Studio.
So that means just search for that in drawable directory. And while adding new vector assets, right click on the DRAWABLE DIRECTORY only so that it gets into that directory else it might end up outside it.

how do you use svg in drawable folder?

i am creating a bottom navigation bar for a android app following this guide
however, when using svg in android:icon and building it, it shows a error
Error: The file name must end with .xml or .png
i found out that i needed to move the svg to the assets folder. but if i move it, i can't use the svg... any help is much appreciated, thank you
The answer above gives a link to convert pictures from SVG to XML, but this tool is not for free(only for one SVG file)
So why not to use ANDROID build-in tool?
The best way is to go to res-> drawable-> Vector Asset -> Local file (SVG, PSD) ->select your SVG file from the place you save it.
and you are done :)
Android uses vector drawables which are xml files rather than SVG's.
You will have to convert the SVG to a vector drawable. Many ways of doing it but a handy web tool is available here.
It won't do complex SVG's but copes with the majority.

How to create custom shape using XML as a drawable in Android?

Have a look at this Gist.
Above gist creates a drawable which looks like this:
Clearly in the gist, pathData property has been provided coordinates. How is this achieved, I mean, ofcourse someone doesn't found each point according to his needs.
My question : How is this achieved? Is there any tool present to do so?
Drawable like this reduces app size by avoiding to have an image instead. Also, there are questions for drawables in XML like this, this and many more but I think my Question is very different (and useful, probably).
You can design your SVG files using some tools such as Android Vector Asset Studio
Usually people don't write the SVG paths themselves, they use a tool or an editor where they sketch the drawing and generate the file.
What you have to do is to create a SVG image using an SVG editor such as Inkscape (the one I use)
or if you want a more professional (and expensive) editor you can use Adobe Illustrator. You can even use a tool called svg-edit which is accessible in the browser.
After creating your required art, save your SVG file.
Next goto and open Android Studio.
Right click on the res folder (any folder where drawables are usually placed)
Select New > Vector Asset. This opens the following window.
Select local file
Edit the path to direct it to the location of your svg file
Depending on the complexity of your image, errors may be thrown (not all svg elements get converted to xml. Hence, avoid using complex art in svg, use raster images in that case).
Android studio does some fixes on its own. So even if errors are thrown, if your image renders fine, then you are good to go.
Click Next > adjust a few more settings > Click Finish
Your xml vector asset has been created successfully.
Note:
To ensure backward compatibility, add the following to your build.gradle
android{
defaultConfig{
vectorDrawables.useSupportLibrary = true
}
}
dependencies{
compile 'com.android.support:appcompat-v7:23.2.0'
}
Hope this has helped you.
For more info see the official documentation.

How do I export Android XML vector drawables to another format?

I want to recreate my app for iOS and the icons in Android are XML vectors with the "android:pathData" attribute. How do I convert these to an image that I can place into Xcode and use (preserving transparency)?
I have searched for a solution and found nothing and read the article on the Android Developer site on Vector Asset Studio but found nothing about exporting these drawables to something I can import into Xcode.
I did it by creating an SVG file and copying the value of the pathData attribute of the path element in the XML file and pasting it into the d attribute of the path element in the SVG file. I then converted it to PNG using ImageMagick.
So
<path android:pathData="[Path Data]">
becomes
<path d="[Path Data]">.
Then
convert -background none image.svg image.png
in the command line.
If there is a better way of doing this please post it.
After using the trick Questioner provide, I use a browser to open the svg file, zoom-in to the size as big as possible and take a screenshot. FYI.

Categories

Resources