I'm currently writing a small controller app a for game. Whilst looking around for information regarding analog sticks, I was shown a particular application with a fantastic joystick:
The app is called "AndroG Controller", which is available on Google Play. Could someone perhaps explain how much work this would require? If you try the app, you can see that it simulates a 3D joystick, so I imagine it involves some form of animation.