Animation as watch hand?

Is it possible, easily, to use an animation as a watch hand?

I have 5 images, and the animation would cycle through and back each image, on repeat. Using as a second hand, so the hand obviously has to move in it’s normal fashion whilst cycling through/animating

Hope this makes sense?

To add more to this, I have tried importing separate images via the animation import, but don’t see an animation can be allocated as a watch hand?

Also saved my animation as a gif, and loaded as a watch hand, but this only shows the lowest layer, and doesn’t animate…even though the file dialog does show the animation…

Hi GlasBeard,
You could do it with 60 animations 6% apart and have the Opacity set by the Second Tag.
I believe when adding a .gif to GWD it is converted to a .png file.

Ron
Samsung Developer Program

Hi and thanks for this.

I’ve looked at tags in the past and got completely lost! I may have to rethink this face.

Thanks anyway :slight_smile:

The best way to do complicated tags is to write them down in a text editor one condition at a time.
it is all a matter of true (not zero) or false (zero)

Ron
Samsung Developer Program

Hello, problem here is, that the animations do not have rotation property where some easy expression would fit all the need.
If you would be still willing to put in 60 animations layers (one for each second position - very tedious for one ticking hand I think), the expression for opacity in each one would be like from 100*([s]==0) for the first one to 100*([s]==59) for the last one. But maybe even time line loop could be used instead.

I think I’ll need to pass on this idea. These tags confuse the life out of me, and yes, adding 60 animations for one hand seems a bit of overkill.

Thanks anyway guys.

I made animated watch hands. Only hour and minute hands for now.
I didn’t use tags. I did it by hiding and showing the same animation near the numbers on the dial…
The bigger bouncing ball is for the hour and the smaller one is for the minute hand…
Thank You…

1 Like

I realize this is a very old thread, but I was looking for an answer to the same problem. I found a solution of sorts that works well, if anyone is looking for a similar solution I thought it best to post here as it was one of the very few posts online about the topic.

For my solution I had 2 pngs with footsteps going round the clock face for seconds. The idea was simple in design, Footstep1.png was to show on every even second starting at 0 at 58, Footstep2.png was to show on every odd second starting at 1 ending at 59.

To achieve this both pngs where set as hands synced to seconds in minutes with no changes to settings. On the timeline panel, bottom right is the scale slider, move that all the way to the left. At this point it displays midnight 00:00:00 (HH:mm:ss). Obviously setting every other second for 24 hrs is not a viable option, thankfully the solution is extremely simple.

On the row for Footstep1.png I left first second 0:0:0, 0:0:0 to visible and set the next second 0:0:1, 0:0:1 to hide, then select both time frames (0:0:0, 0:0:1) and select loop. This mirrors the setting for the entire 24 hours.

For Footstep2.png I did the reverse for the 2 times and hit loop again. This should work for any number of animations.

Now I have alternating footsteps going round the clock face every other second.

I hope this helps someone.

1 Like

is anyone still interested in doing this? because I found a way to rotate animations

3 Likes

I guess no one is interested anymore but just in case anyone in the future is, I’m going to post how to do it anyways.

1.- add animation to your project in Galaxy Watch Studio

2.- Right click on the animation and select Save As Complication

3.- go to folder where complications are saved usually %USERPROFILE%\GearWatchDesigner\complication\

4.- go into the newly created compilation folder and then go to the res folder within it then edit the complication.xml file

5.- add angle=“expr_[s]*6” within the animation Tag Ex: <animation angle="expr_[s]*6"> in a text editor and save it

angle=“expr_[s]*6” this is to rotate it by the second but you can use whatever value you want

6.- add the newly created custom complication in your Galaxy Watch Studio project, you can then use the complication for other projects too

3 Likes

I do not use animations, but its good to know that the GWS is capable to process the custom edited .xml files.

cool work mate, I would like to contact you ?

I think you asked me something on Youtube. I didn’t want to reply to you on YouTube otherwise everyone would know the secret, so I replied to your message on Facebook messenger. I think you never checked your message requests…

1 Like

Hi bro, believe me no message request from you, I checked messenger. could you post a message to messenger again :slight_smile:

I have some animated watch faces.

Very nice watch faces. I sent you a message on Facebook but it says: This account can’t receive your message because they don’t allow new message requests from everyone.

Please try again, i think done it

I am very much interested. Here are my results. What am I doing wrong here? Thank You very much…
Screenshot 2023-12-23 152516

Would you please also add the values for minute and hour?

Hi @muradium I think the problem is that you added my example as it was but you only need to add the angle="expr_[s]*6" to the already existing <animation> declaration which should be just above the first <image> declaration of the animation in the be the custom complication.xml that you created after importing the animation into galaxy watch studio then right click on it and selected save as a complication.

Also, the one for minutes should be angle="expr_[m]*6" the one for 24 hours should be angle="expr_[H]*15" and the one for 12 hours should be angle="expr_[H]*30"

Also, the angle is just to make the animation rotate where it stands.

If you want to use them to go around the clock as watch hands you would have to add the next part to the placement tab with the animation selected you also have to center the animation for the next part to work properly.

By the way if you only want this last part you don’t have to create a complication you can just add it to the animation placement tab but if you also want the animation itself to rotate then after you add the appropriate X and Y tags in the placement tab inside galaxy watch studio you have to right click on the animation then select save as complication then you have to add the angle property by editing the complication.xml in the proper directory which usually is %userprofile%\GearWatchDesigner\complication

almost forgot, if you did edited the complication, the angle effects won’t appear until you import the custom complication

this is for the seconds
for the X position:
(([s]==0)*(0)+([s]==1)*(-0.1045)+([s]==2)*(-0.2079)+([s]==3)*(-0.3090)+([s]==4)*(-0.4067)+([s]==5)*(-0.5)+([s]==6)*(-0.5878)+([s]==7)*(-0.6691)+([s]==8)*(-0.7431)+([s]==9)*(-0.8090)+([s]==10)*(-0.8660)+([s]==11)*(-0.9135)+([s]==12)*(-0.9511)+([s]==13)*(-0.9781)+([s]==14)*(-0.9945)+([s]==15)*(-1)+([s]==16)*(-0.9945)+([s]==17)*(-0.9781)+([s]==18)*(-0.9511)+([s]==19)*(-0.9135)+([s]==20)*(-0.8660)+([s]==21)*(-0.8090)+([s]==22)*(-0.7431)+([s]==23)*(-0.6691)+([s]==24)*(-0.5878)+([s]==25)*(-0.5)+([s]==26)*(-0.4067)+([s]==27)*(-0.3090)+([s]==28)*(-0.2079)+([s]==29)*(-0.1045)+([s]==30)*(0)+([s]==31)*(0.1045)+([s]==32)*(0.2079)+([s]==33)*(0.3090)+([s]==34)*(0.4067)+([s]==35)*(0.5)+([s]==36)*(0.5878)+([s]==37)*(0.6691)+([s]==38)*(0.7431)+([s]==39)*(0.8090)+([s]==40)*(0.8660)+([s]==41)*(0.9135)+([s]==42)*(0.9511)+([s]==43)*(0.9781)+([s]==44)*(0.9945)+([s]==45)*(1)+([s]==46)*(0.9945)+([s]==47)*(0.9781)+([s]==48)*(0.9511)+([s]==49)*(0.9135)+([s]==50)*(0.8660)+([s]==51)*(0.8090)+([s]==52)*(0.7431)+([s]==53)*(0.6691)+([s]==54)*(0.5878)+([s]==55)*(0.5)+([s]==56)*(0.4067)+([s]==57)*(0.3090)+([s]==58)*(0.2079)+([s]==59)*(0.1045))*-160

for the Y position:
(([s]==0)*(1)+([s]==1)*(0.9945)+([s]==2)*(0.9781)+([s]==3)*(0.9511)+([s]==4)*(0.9135)+([s]==5)*(0.8660)+([s]==6)*(0.8090)+([s]==7)*(0.7431)+([s]==8)*(0.6691)+([s]==9)*(0.5878)+([s]==10)*(0.5)+([s]==11)*(0.4067)+([s]==12)*(0.3090)+([s]==13)*(0.2079)+([s]==14)*(0.1045)+([s]==15)*(0)+([s]==16)*(-0.1045)+([s]==17)*(-0.2079)+([s]==18)*(-0.3090)+([s]==19)*(-0.4067)+([s]==20)*(-0.5)+([s]==21)*(-0.5878)+([s]==22)*(-0.6691)+([s]==23)*(-0.7431)+([s]==24)*(-0.8090)+([s]==25)*(-0.8660)+([s]==26)*(-0.9135)+([s]==27)*(-0.9511)+([s]==28)*(-0.9781)+([s]==29)*(-0.9945)+([s]==30)*(-1)+([s]==31)*(-0.9945)+([s]==32)*(-0.9781)+([s]==33)*(-0.9511)+([s]==34)*(-0.9135)+([s]==35)*(-0.8660)+([s]==36)*(-0.8090)+([s]==37)*(-0.7431)+([s]==38)*(-0.6691)+([s]==39)*(-0.5878)+([s]==40)*(-0.5)+([s]==41)*(-0.4067)+([s]==42)*(-0.3090)+([s]==43)*(-0.2079)+([s]==44)*(-0.1045)+([s]==45)*(0)+([s]==46)*(0.1045)+([s]==47)*(0.2079)+([s]==48)*(0.3090)+([s]==49)*(0.4067)+([s]==50)*(0.5)+([s]==51)*(0.5878)+([s]==52)*(0.6691)+([s]==53)*(0.7431)+([s]==54)*(0.8090)+([s]==55)*(0.8660)+([s]==56)*(0.9135)+([s]==57)*(0.9511)+([s]==58)*(0.9781)+([s]==59)*(0.9945))*-160

this is for the minutes
this is for X:
(([m]==0)*(0)+([m]==1)*(-0.1045)+([m]==2)*(-0.2079)+([m]==3)*(-0.3090)+([m]==4)*(-0.4067)+([m]==5)*(-0.5)+([m]==6)*(-0.5878)+([m]==7)*(-0.6691)+([m]==8)*(-0.7431)+([m]==9)*(-0.8090)+([m]==10)*(-0.8660)+([m]==11)*(-0.9135)+([m]==12)*(-0.9511)+([m]==13)*(-0.9781)+([m]==14)*(-0.9945)+([m]==15)*(-1)+([m]==16)*(-0.9945)+([m]==17)*(-0.9781)+([m]==18)*(-0.9511)+([m]==19)*(-0.9135)+([m]==20)*(-0.8660)+([m]==21)*(-0.8090)+([m]==22)*(-0.7431)+([m]==23)*(-0.6691)+([m]==24)*(-0.5878)+([m]==25)*(-0.5)+([m]==26)*(-0.4067)+([m]==27)*(-0.3090)+([m]==28)*(-0.2079)+([m]==29)*(-0.1045)+([m]==30)*(0)+([m]==31)*(0.1045)+([m]==32)*(0.2079)+([m]==33)*(0.3090)+([m]==34)*(0.4067)+([m]==35)*(0.5)+([m]==36)*(0.5878)+([m]==37)*(0.6691)+([m]==38)*(0.7431)+([m]==39)*(0.8090)+([m]==40)*(0.8660)+([m]==41)*(0.9135)+([m]==42)*(0.9511)+([m]==43)*(0.9781)+([m]==44)*(0.9945)+([m]==45)*(1)+([m]==46)*(0.9945)+([m]==47)*(0.9781)+([m]==48)*(0.9511)+([m]==49)*(0.9135)+([m]==50)*(0.8660)+([m]==51)*(0.8090)+([m]==52)*(0.7431)+([m]==53)*(0.6691)+([m]==54)*(0.5878)+([m]==55)*(0.5)+([m]==56)*(0.4067)+([m]==57)*(0.3090)+([m]==58)*(0.2079)+([m]==59)*(0.1045))*-160

this is for Y:
(([m]==0)*(1)+([m]==1)*(0.9945)+([m]==2)*(0.9781)+([m]==3)*(0.9511)+([m]==4)*(0.9135)+([m]==5)*(0.8660)+([m]==6)*(0.8090)+([m]==7)*(0.7431)+([m]==8)*(0.6691)+([m]==9)*(0.5878)+([m]==10)*(0.5)+([m]==11)*(0.4067)+([m]==12)*(0.3090)+([m]==13)*(0.2079)+([m]==14)*(0.1045)+([m]==15)*(0)+([m]==16)*(-0.1045)+([m]==17)*(-0.2079)+([m]==18)*(-0.3090)+([m]==19)*(-0.4067)+([m]==20)*(-0.5)+([m]==21)*(-0.5878)+([m]==22)*(-0.6691)+([m]==23)*(-0.7431)+([m]==24)*(-0.8090)+([m]==25)*(-0.8660)+([m]==26)*(-0.9135)+([m]==27)*(-0.9511)+([m]==28)*(-0.9781)+([m]==29)*(-0.9945)+([m]==30)*(-1)+([m]==31)*(-0.9945)+([m]==32)*(-0.9781)+([m]==33)*(-0.9511)+([m]==34)*(-0.9135)+([m]==35)*(-0.8660)+([m]==36)*(-0.8090)+([m]==37)*(-0.7431)+([m]==38)*(-0.6691)+([m]==39)*(-0.5878)+([m]==40)*(-0.5)+([m]==41)*(-0.4067)+([m]==42)*(-0.3090)+([m]==43)*(-0.2079)+([m]==44)*(-0.1045)+([m]==45)*(0)+([m]==46)*(0.1045)+([m]==47)*(0.2079)+([m]==48)*(0.3090)+([m]==49)*(0.4067)+([m]==50)*(0.5)+([m]==51)*(0.5878)+([m]==52)*(0.6691)+([m]==53)*(0.7431)+([m]==54)*(0.8090)+([m]==55)*(0.8660)+([m]==56)*(0.9135)+([m]==57)*(0.9511)+([m]==58)*(0.9781)+([m]==59)*(0.9945))*-160

this is for the 12 hour clock
this is for the X:
(([H]==0)*(0)+([H]==1)*(-0.5)+([H]==2)*(-0.8660)+([H]==3)*(-1)+([H]==4)*(-0.8660)+([H]==5)*(-0.5)+([H]==6)*(0)+([H]==7)*(0.5)+([H]==8)*(0.8660)+([H]==9)*(1)+([H]==10)*(0.8660)+([H]==11)*(0.5)+([H]==12)*(0)+(H]==13)*(-0.5)+([H]==14)*(-0.8660)+([H]==15)*(-1)+([H]==16)*(-0.8660)+([H]==17)*(-0.5)+([H]==18)*(0)+([H]==19)*(0.5)+([H]==20)*(0.8660)+([H]==21)*(1)+([H]==22)*(0.8660)+([H]==23)*(0.5))* -160

this is for the Y:
(([H]==0)*(1)+([H]==1)*(0.8660)+([H]==2)*(0.5)+([H]==3)*(0)+([H]==4)*(-0.5)+([H]==5)*(-0.8660)+([H]==6)*(-1)+([H]==7)*(-0.8660)+([H]==8)*(-0.5)+([H]==9)*(0)+([H]==10)*(0.5)+([H]==11)*(0.8660)+([H]==12)*(1)+([H]==13)*(0.8660)+([H]==14)*(0.5)+([H]==15)*(0)+([H]==16)*(-0.5)+([H]==17)*(-0.8660)+([H]==18)*(-1)+([H]==19)*(-0.8660)+([H]==20)*(-0.5)+([H]==21)*(0)+([H]==22)*(0.5)+([H]==23)*(0.8660))*-160

this is for the 24 hour clock
this is for the X:
(([H]==0)*(0)+([H]==1)*(-0.26)+([H]==2)*(-0.5)+([H]==3)*(-0.71)+([H]==4)*(-0.87)+([H]==5)*(-0.97)+([H]==6)*(-1)+([H]==7)*(-0.97)+([H]==8)*(-0.87)+([H]==9)*(-0.71)+([H]==10)*(-0.5)+([H]==11)*(-0.26)+([H]==12)*(0)+([H]==13)*(0.26)+([H]==14)*(0.5)+([H]==15)*(0.71)+([H]==16)*(0.87)+([H]==17)*(0.97)+([H]==18)*(1)+([H]==19)*(0.97)+([H]==20)*(0.87)+([H]==21)*(0.71)+([H]==22)*(0.5)+([H]==23)*(0.26))* -160

this is for the Y:
(([H]==0)*(1)+([H]==1)*(0.97)+([H]==2)*(0.87)+([H]==3)*(0.71)+([H]==4)*(0.5)+([H]==5)*(0.26)+([H]==6)*(0)+([H]==7)*(-0.26)+([H]==8)*(-0.5)+([H]==9)*(-0.71)+([H]==10)*(-0.87)+([H]==11)*(-0.97)+([H]==12)*(-1)+([H]==13)*(-0.97)+([H]==14)*(-0.87)+([H]==15)*(-0.71)+([H]==16)*(-0.5)+([H]==17)*(-0.26)+([H]==18)*(0)+([H]==19)*(0.26)+([H]==20)*(0.5)+([H]==21)*(0.71)+([H]==22)*(0.87)+([H]==23)*(0.97))*-160

1 Like