![JAR search and dependency download from the Maven repository](/logo.png)
com.qozix.animation.TweenHandler Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of TileView Show documentation
Show all versions of TileView Show documentation
The TileView widget is a subclass of ViewGroup that provides a mechanism to asynchronously display tile-based images, with additional functionality for 2D dragging, flinging, pinch or double-tap to zoom, adding overlaying Views (markers), built-in Hot Spot support, dynamic path drawing, multiple levels of detail, and support for any relative positioning or coordinate system.
The newest version!
package com.qozix.animation;
import java.util.ArrayList;
import android.os.Handler;
import android.os.Message;
public class TweenHandler extends Handler {
private static final int RENDER = 1;
private static TweenHandler instance = null;
public static TweenHandler getInstance(){
if(instance == null){
instance = new TweenHandler();
}
return instance;
}
private ArrayList tweens = new ArrayList();
public void addTween( Tween tween ) {
tweens.add( tween );
sendEmptyMessage( RENDER );
}
public void removeTween( Tween tween ) {
tweens.remove( tween );
if( tweens.size() == 0 ) {
if( hasMessages( RENDER ) ) {
removeMessages( RENDER );
}
}
}
@Override
public void handleMessage( final Message message ) {
boolean tweensAreRunning = false;
ArrayList condemned = new ArrayList();
for( Tween tween : tweens ) {
boolean tweenIsComplete = runTween( tween );
if( !tweensAreRunning ) {
if( !tweenIsComplete ) {
tweensAreRunning = true;
}
}
if( tweenIsComplete ){
condemned.add( tween );
}
}
if( tweensAreRunning ) {
sendEmptyMessage( RENDER );
} else {
if( hasMessages( RENDER ) ) {
removeMessages( RENDER );
}
}
tweens.removeAll( condemned );
}
private boolean runTween( Tween tween ) {
double ellapsed = System.currentTimeMillis() - tween.getStartTime();
ellapsed = Math.min( ellapsed, tween.getDuration() );
tween.setEllapsed( ellapsed );
double progress = tween.getProgress();
double eased = tween.getEasedProgress();
for ( TweenListener l : tween.getTweenListeners() ) {
l.onTweenProgress( progress, eased );
}
boolean complete = ellapsed >= tween.getDuration();
if ( complete ) {
for ( TweenListener l : tween.getTweenListeners() ) {
l.onTweenComplete();
}
}
return complete;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy