package it.sephiroth.android.library.util; import it.sephiroth.android.library.util.v14.ViewHelper14; import it.sephiroth.android.library.util.v16.ViewHelper16; import android.util.Log; import android.view.View; public class ViewHelperFactory { private static final String LOG_TAG = "ViewHelper"; public static abstract class ViewHelper { protected View view; protected ViewHelper( View view ) { this.view = view; Log.i( LOG_TAG, this.getClass().getSimpleName() ); } public abstract void postOnAnimation( Runnable action ); public abstract void setScrollX( int value ); public abstract boolean isHardwareAccelerated(); } public static class ViewHelperDefault extends ViewHelper { public ViewHelperDefault( View view ) { super( view ); } @Override public void postOnAnimation( Runnable action ) { view.post( action ); } @Override public void setScrollX( int value ) { Log.d( LOG_TAG, "setScrollX: " + value ); view.scrollTo( value, view.getScrollY() ); } @Override public boolean isHardwareAccelerated() { return false; } } public static final ViewHelper create( View view ) { final int version = android.os.Build.VERSION.SDK_INT; if ( version >= 16 ) { // jelly bean return new ViewHelper16( view ); } else if ( version >= 14 ) { // ice cream sandwich return new ViewHelper14( view ); } else { // fallback return new ViewHelperDefault( view ); } } }