I want to be able to animate 2D sprites in a flexible, modular and decoupled way.
Supposing I have a sprite sheet for an ant to walk left; I would like to plug in the set of images into an animation manager, then when I query the manager to find the set of images, I want to be able to draw them while the manager prepares the next frame. This way I won't have to draw every single frame in code or place special algorithm functions for special game object animations in places I don't want them such as my app state machine.
When I say flexibility I mean that I should be able to perform all kinds of animations on different types of game object images, looping animations, play-once animations, play multiple animations at the same time.
I'm programming in Java and would prefer to not use 3rd party software for, this is for a major project