Summary
Animated transitions are a common technique in rich-client applications to help users observe how one screen state changes into another. Chet Haase developed an open-source Java library that makes animated effects easy to employ in Swing applications.
Advertisement
The best aspects of rich, modern user interfaces enhance the usability of an application. A common problem in many rich-client applications is that users may not be aware of screen updates, or that screen updates take place in a crude fashion, one screen state often completely replacing a previous state.
Animated transitions aim to solve this usability problem by making transitions between screen updates smooth. Chet Haase, an architect with Sun's Java client group, and co-author of Filthy Rich Clients, recently released an open-source animated transitions library that makes it easy to use transitions in Swing UIs:
It's been a long slog, from initial demos of the technology in a session on "Advanced 2D" at JavaOne 2005, to use of an early version of the library in the Aerith application, to finishing off the library and creating more demos exercising it for the book Filthy Rich Clients, to getting legal approval for pushing the actual source code (an exercise over the last several months that was not unlike slamming the refrigerator door on my head, over and over. Every day.)... But it's finally done, and the long-awaited day is finally here:
The Animated Transitions library is hereby released.
A typical application has several states that it moves between during its lifetime: data entry forms, results screens, photo albums with different views of the images, shopping carts with items that you can't afford, and so on. Usually, applications do a horrible job of moving the user between these different screens: forms are erased before different forms take their place, results are popped suddenly onto the screen, and graphics and GUI objects jump discontinuously between screens. In general, each current UI screen is taken down when it's completed and then the new screen is displayed in its place.
HTML applications are great examples of this: you fill out some data on one page, click the Submit button, watch it erase, and then wait for it to paint a completely new UI. Then you spend some time puzzling out the new interface, figuring out what you need to do, and where the new Submit button is...
Wouldn't it be nice if applications created a more logical flow between these different application states, to gently bring the user with them into each new UI? What if users didn't have to figure out each new UI from scratch, but instead were brought along with the application so that they understood how they got here from back there?
That's what Animated Transitions are all about: animating the user interface from one screen of the application to the next, to create a seamless flow between these states. Transitions help keep the user connected to the program by helping them understand how the UIs fit together.
What do you think of Swing's ability to create compelling, modern user interfaces?
Gads. Yet more things moving around on my monitor when I don't specifically drag them. Yet more GUIs that force animated effects on me without opt-in. Yet more GUIs that don't provide opt-out for animated effects. Yet more things giving me brain seizures. Yet more things that I have to learn when to close my eyes for so that I don't blank out.
I love working with my eyes shut. I love squinting and looking sideways at my monitor just in case something might start to move around on me. I love being a pair programming navigator when the driver does something without warning that sets some dang GUI feature in motion. I'll spare you more carrying on about the "compelling, modern user interfaces" I've been stuck with for the past few years.
As far as I'm concerned, snazzy, presumably helpful, animated GUI effects are just something "cool" for developers to screw around with and stick on their resumes since systems have had decent video cards, CPUs, memory, etc. for some years now. Industry would be better off addressing such things as the issues raised in "Enterprise Software Freakishness" (http://www.artima.com/forums/flat.jsp?forum=276&thread=217602).
i'm guessing you must be as old as i am since i figure "kids these days" are into the whole ADD thing? well, on the other hand, i was at a movie a little while ago, and the preview with choppy editing was killing me - and a really young kid in front of me said to his parent something like "i hate it when they do that" i think referring to the insanity. so maybe not all is lost and maybe it isn't just old people such as myself who want things simple, and maybe you're a young-un. any which way, "amen".
I'm kind of an old fart considering I'll be 47 next month. But it's not really my age or generation that causes me to flee from unnecessary animation.
I remember thrilling at the sight of a twirling Rubik's Cube on an SGI workstation 25 years ago. I used to think animated GIFs were cool. I used to think Internet Explorer 4 image "transitions" were cool. I used to think JavaScript animated "layers" in Netscape 4 were cool. I used to think Flash was cool. I used to think OS X had its cool aspects.
But everything changed in October 2003 while I was watching baseball on TV. About every 15 seconds, the network logo came swirling out of nowhere and swooped off the screen to the left. I blacked out. And I blacked out during the next night's baseball game. Then I blacked out while the camera did a slow pan in a travelogue. I spent the following months getting the hang of shutting my eyes, looking away, blinking, squinting, or looking through my fingers as soon as I spotted a triggering motion.
I installed OS X in 2004, after having used Mac OS 1, 6, 7, & 9. I was appalled to discover that, except for two "features" of the Dock, it's impossible to disable the zillions of different motions that OS X and Cocoa apps force on users. So, I spent the next several months learning when to close my eyes, and it took me over a year not to look at icons when they're so desperately trying to alert me by bouncing.
In short, I used to love computers, but now I fear them, all on account of the user interfaces. I used to love the internet, and now I can't even navigate a growing portion of it without turning on JavaScript and running the risk of being assaulted by Craptaculous--I mean, Scriptaculous--effects.
holy cow, i am so sorry to hear. accessibility is something that is, apparently, unfortunately mostly a joke when it comes to the software industry. i've seen it inside MSFT where employees with e.g. extreme vision impairment couldn't even use MSFT tools, even when the tools were supposedly in accessibility mode (it forced it to be white text on a white background ha ha good qa there). we're nowhere near paying attention to the range of issues within the accessibility we ethically need to. admittedly, it can be really hard technically to get it right, and also/therefore expensive, but that shouldn't keep folks from trying. thanks for sharing your perspective, it is good for everyone to be reminded and sobered.