package rabbitescape.ui.android; public class Flinger implements Runnable { private static final float slow_factor = 0.95f; private static final float min_vel = 3f; private static final int pause_time_ms = 10; private final Scrolling scrolling; private boolean running; public Flinger( Scrolling scrolling ) { this.scrolling = scrolling; this.running = true; } public void pleaseStop() { running = false; } @Override public void run() { while( running ) { scrolling.velX *= slow_factor; scrolling.velY *= slow_factor; if ( Math.abs( scrolling.velX ) < min_vel && Math.abs( scrolling.velY ) < min_vel ) { running = false; break; } scrolling.doScroll(); try { Thread.sleep( pause_time_ms ); } catch ( InterruptedException e ) { // Should never happen } } } public void start() { new Thread( this, "Flinger" ).start(); } }