Github of Garmin WatchFaces for New Programmers

Hey! Thank you to everyone in the community that helped me as a new programmer and student in College. 

Here's my Github for anyone who thinks they can benefit from it : https://github.com/SarahBass . It is full of Garmin Watchface examples.  

I am just posting my examples as help for new people trying to learn. Some of the watches have the full program in a Zip File on the release page for you to try out in VS Code. Please Don't Do any Pull Requests- These are already published, and I like them the way they are even if they might be sloppy, not the most efficient, or maybe not well organized. They work fine, I haven't had any crashes, and I have lots of positive reviews in the Store, so I think they are good enough for a beginner to look at. Plus I have a moon phase calculator, Horoscopes, and other cool stuff in there that I designed.  

If you find anything helpful -Follow or Star as a thanks ! Pray Blush 

My github also has Fitbit Watch Examples, Android Watch Examples, and Zepp/Amazfit Examples. I am trying to build my resume - so any stars or Follows is appreciated! 

If anyone else has a Github they want to share, I'd love to follow and see how you design your Garmin watches too!

  • Great !

    I'm curious why your pictures look sharp on the watch but mine are blurry, since you did not upload your resource images to github, I do not know the magic, can you help me? Thanks.

  • Thanks!! I do have my image resources on some of the watches - Look at the side of Github to download the whole zip file and then open it up in Visual Studio Code. Here's an example of a full program you can play around with : https://github.com/SarahBass/VirtualPetMonkey

    Here is my super comprehensive answer:

    I am using Visual Studio Code and the simulator to take screenshots. I use my Macbook Pro to screen record the simulator at the resolution of my screen. I take screen recordings of my simulation tests, as I have to run the program doing different things on different size watches. After doing this and having a good 10 minutes of  video recording, I then take snapshots from the video and use that as my promo art. I also like to edit a little video together and post it, so users can see what the watch looks like on different devices.

    I think it is best to use a high resolution watch for promo pics. I took a look at my diagnostics (Look at statistics page after you publish) , and saw that a majority of people downloading my app were using a Venu 2S and a Vivioactive 4S. I used the higher resolution Venu 2S for my promos, with the Venu 2S watch showing to attract more users who have one. 

    All my in program images are .PNG files not .jpeg , and I do not use dithering. The PNG files are made in a free Art Vector program called Vectornator, now called Curve. (A super nice guy runs that app, and if you ever post your work on Instagram and link it to him, he probably will promote your art or watch.)

    The benefit of Vectornator is that all the art can actually be downloaded as a javascript, as it is using vectors not pixels. Nice for me because I use my art for multiple platforms including Apple Watch, Fitbit, and Wear OS. You can export the images in any resolution you want because they are not pixel based, but running entirely on Javascript. 

    Although most of my art looks like it was drawn by a child, it actually has a lot of thought behind it!

    If you look at my program, I specifically use colors that appear sharply on Garmin watches, hand programming the values into the Vector Art Program. See picture above - I control the Fill and Stroke with Hex Codes.

    Read this page about optimizing bitmaps : https://developer.garmin.com/connect-iq/connect-iq-faq/how-do-i-optimize-bitmaps/

     

    In my Halloween Watch (Which I am currently working on) I am only using Transparent, 0xFFFFFF , 0x000000, 0x00AA00, and 0xFF5500? There are only 4 colors in the whole watch, no blending, no dithering, no pixelization. 

    So I always generate my background as a vector circle and fill with a clean color, in this case 0xFFFFFF (By the way, White drains the battery significantly. Use a darker color for better battery management - Many of my watches have a 0x000000 black background for this reason and don't drain the battery at all)

    The Cat is a animated .png, and the background grave and moon is a separate .png behind it. 

    This is going to come out crystal clean on the display!  The colors will look the same on every device because I used 16 bit colors. 

     Here is another example where I did not optimize colors as much:

    So for this image.

    The bright teal color 0x54FF82 of the alien will appear great on AMOLED screens like Venu 2S, but will be translated to 0x00FF00 on 16 bit devices and  0x00FFAA on a 64 Bit Screen. 

    Now there are different looks on different screens. 

    Also, although my final product looks like one image, there are multiple .png files being drawn at once and layered together using a transparent color enabled.

    My watches never get the highly desired "Animated" seal because I don't use the official animation Toy Box Library. I am just flashing 2 images using a single line of code to keep the memory usage down. My code probably looks different from other developers - so keep in mind that people are probably better optimizing their code for each model. You might want that official Animation Seal because it will get you more downloads. 

    You should have clean bitmap images for the following sizes:

    216x216

    240x240

    360x300 

    360 x360

    390x390

    416x416

    454 x454

    This is why using Vectornator works great for me, I make one image and then export it in any size I need quickly and the resolution is always 100% crystal clear because it came from a clean javascript vector and isn't getting re-pixalated or stretched. Below is a picture of me choosing a PNG format and exporting it at a 454x454 size. I can change what size I want and even the format (If i want it to be a svg, png, jpeg and so on) because it is a vector run on javascript. 

    For more help, Look at this guideline for 64 bit colors and watch resolutions: https://developer.garmin.com/connect-iq/reference-guides/devices-reference/

    I hope that helps!

  • Thank you for your reply .

    Your best practices will help me solve a problem that has been bothering me for days, thank you again.

    I will try your method in the near future.