Because you are on a touch screen, your finger moves a couple hundred times a second, so you avatar might also move that much times. You should make a threshold value, for which not to move if the difference between the previous frame and this frame is smaller then this threshold. Also, you might wanna sleep the main thread for a very small time, because it tends to hog the cpu when your finger is on the screen.