You can use the
animation widgets to move, rotate, scale or fade out / in UI elements. Simply create an animation group and define one or more of the aforementioned derived animation objects inside it.
Back in the days this was done by registering the OnUpdate event for a frame and calculate these transitions by yourself. Technically the animation system does exactly that.
As for animated textures like in an animated gif you need to change the texture inside such a
OnUpdate event handler. Best practice here is to save all the frames in one big texture and make use of
SetTexCoord accordingly.
A good example is LFG-Eye.blp used by the LFG minimap button:
Even more straightforward you can utilize the public function AnimateTexCoords() defined in
UIParent.lua which takes over all the work for you.
I suggest you take a look at the
MiniMapLFGFrame. I also suggest that you use these kinds of animations sparingly.