Android Open Source - slider Render Handler






From Project

Back to project page slider.

License

The source code is released under:

Apache License

If you think the Android project slider listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package de.devisnik.android.sliding;
/* w  w  w .  ja  v a 2s  . co  m*/
import android.graphics.Canvas;
import android.graphics.Rect;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.os.SystemClock;
import android.view.SurfaceHolder;

public class RenderHandler extends Handler {
  private static final int MAX_FPS = 60;
  private static final int TARGET_DURATION = 1000 / MAX_FPS;
  private static final int ACTION_REDRAW = 1;
  private static final String TAG = "RenderHandler";
  long lastDraw = 0;
  private final SurfaceHolder mHolder;
  private final FrameDrawer mFrameDrawer;

  public RenderHandler(final Looper looper, final FrameDrawer frameDrawer, final SurfaceHolder holder) {
    super(looper);
    mFrameDrawer = frameDrawer;
    mHolder = holder;
  }

  @Override
  public void handleMessage(final Message msg) {
    if (msg.what == ACTION_REDRAW)
      redraw();
    else
      Logger.e(TAG, "unable to handle message: " + msg);
  }

  private void redraw() {

    long startTime = SystemClock.uptimeMillis();
    Canvas c = null;
    try {
      lastDraw = startTime;
      Rect dirtyRegion = mFrameDrawer.getDirtyRegion();
      c = mHolder.lockCanvas(dirtyRegion);
      if (c != null)
        mFrameDrawer.draw(c, dirtyRegion);
      // if (Logger.isDebugEnabled())
      // mFrameDrawer.drawFpsInfo(c, dirtyRegion.centerX(), dirtyRegion.centerY());
    } finally {
      // do this in a finally so that if an exception is thrown
      // during the above, we don't leave the Surface in an
      // inconsistent state
      if (c != null)
        mHolder.unlockCanvasAndPost(c);
      long drawDuration = SystemClock.uptimeMillis() - startTime;
      long delay = Math.max(1, TARGET_DURATION - drawDuration);
      sendMessageDelayed(obtainMessage(ACTION_REDRAW), delay);
    }
  }

  public void postDraw() {
    sendMessage(obtainMessage(ACTION_REDRAW));
  }
}




Java Source Code List

de.devisnik.android.sliding.ARandom.java
de.devisnik.android.sliding.FPSCounter.java
de.devisnik.android.sliding.FrameDrawer.java
de.devisnik.android.sliding.ISpeed.java
de.devisnik.android.sliding.ImageCache.java
de.devisnik.android.sliding.ImageFactory.java
de.devisnik.android.sliding.Logger.java
de.devisnik.android.sliding.OpenActivity.java
de.devisnik.android.sliding.OpenPreviewActivity.java
de.devisnik.android.sliding.PropertiesBuilder.java
de.devisnik.android.sliding.RenderHandler.java
de.devisnik.android.sliding.Replayer.java
de.devisnik.android.sliding.Settings.java
de.devisnik.android.sliding.SlidingPreferences.java
de.devisnik.android.sliding.SlidingWallpaper.java
de.devisnik.android.sliding.SpeedFactory.java
de.devisnik.android.sliding.SummaryUpdater.java
de.devisnik.android.sliding.tile.BitmapCachingPieceDrawer.java
de.devisnik.android.sliding.tile.CachingPieceDrawer.java
de.devisnik.android.sliding.tile.IPieceDrawer.java
de.devisnik.android.sliding.tile.ImagePieceDrawer.java
de.devisnik.android.sliding.tile.NumberPieceDrawer.java
de.devisnik.android.sliding.tile.PieceDrawerFactory.java
de.devisnik.android.sliding.tile.TileShifter.java
de.devisnik.android.sliding.tile.TileStore.java
de.devisnik.android.sliding.tile.Tile.java
de.devisnik.sliding.FrameFactory.java
de.devisnik.sliding.FrameScrambler.java
de.devisnik.sliding.FromHomeShiftingEvent.java
de.devisnik.sliding.IFrameListener.java
de.devisnik.sliding.IFrame.java
de.devisnik.sliding.IHole.java
de.devisnik.sliding.IMove.java
de.devisnik.sliding.IPiece.java
de.devisnik.sliding.IRandom.java
de.devisnik.sliding.IRobotFrame.java
de.devisnik.sliding.IShifterListener.java
de.devisnik.sliding.MoveFactory.java
de.devisnik.sliding.Point.java
de.devisnik.sliding.ShiftingEvent.java
de.devisnik.sliding.ToHomeShiftingEvent.java
de.devisnik.sliding.animation.AccelerateDecelerateInterpolator.java
de.devisnik.sliding.animation.AnimationRunner.java
de.devisnik.sliding.animation.Animation.java
de.devisnik.sliding.animation.IInterpolator.java
de.devisnik.sliding.animation.IMovement.java
de.devisnik.sliding.animation.IShiftable.java
de.devisnik.sliding.animation.LinearInterpolator.java
de.devisnik.sliding.animation.MetaShiftable.java
de.devisnik.sliding.animation.ShiftAnimation.java
de.devisnik.sliding.animation.Translation.java
de.devisnik.sliding.impl.Frame.java
de.devisnik.sliding.impl.Hole.java
de.devisnik.sliding.impl.Move.java
de.devisnik.sliding.impl.PieceIterator.java
de.devisnik.sliding.impl.Piece.java
de.devisnik.sliding.impl.RobotFrame.java
de.devisnik.sliding.impl.Scrambler.java