Android Open Source - CoreGame Android Fast Render View






From Project

Back to project page CoreGame.

License

The source code is released under:

Copyright (c) 2011 Andrey Moiseev, http://o2genum.ru Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),...

If you think the Android project CoreGame 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 ru.o2genum.coregame.framework.impl;
/*from  www .  j a  v  a 2 s . c  o m*/
import android.graphics.*;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

public class AndroidFastRenderView extends SurfaceView implements Runnable
{
  AndroidGame game;
  Bitmap frameBuffer;
  Thread renderThread = null;
  SurfaceHolder holder;
  volatile boolean running = false;

  public AndroidFastRenderView(AndroidGame game, Bitmap frameBuffer)
  {
    super(game);
    this.game = game;
    this.frameBuffer = frameBuffer;
    this.holder = getHolder();
    /*
     * From email by Fivos Asimakop:
     *
     * Remove the wake lock. It's a buggy thing that can cause troubles on
     * devices like Motorola, ZTE and potentially others. Also it will allow
     * you to remove that permission. The best way to prevent device from
     * going to sleep while playing is setting a "keepscreenon" attribute to
     * ON with the "setKeepScreenOn(true)" method. You may be able to do 
     * this in the SurfaceView that holds the canvas ( Not 100% sure about
     * that, I haven't worked with a Canvas yet ).
     */
    setKeepScreenOn(true);
  }
  
  public void resume()
  {
    running = true;
    renderThread = new Thread(this);
    renderThread.start();
  }

  public void run()
  {
    long startTime = System.nanoTime();
    while(running)
    {
      if(!holder.getSurface().isValid())
        continue;

      float deltaTime = (System.nanoTime() - startTime) / 1000000000.0F;
      startTime = System.nanoTime();
      
      game.getCurrentScreen().update(deltaTime);
      game.getCurrentScreen().present(deltaTime);

      Canvas canvas = holder.lockCanvas();
      canvas.drawBitmap(frameBuffer, 0, 0, null);
      holder.unlockCanvasAndPost(canvas);
    }
  }

  public void pause()
  {
    running = false;
    while(true)
    {
      try
      {
        renderThread.join();
        break;
      }
      catch (InterruptedException ex)
      {
        // Failed to stop thread, try again
      }
    }
  }
}




Java Source Code List

ru.o2genum.coregame.framework.Audio.java
ru.o2genum.coregame.framework.FileIO.java
ru.o2genum.coregame.framework.Game.java
ru.o2genum.coregame.framework.Graphics.java
ru.o2genum.coregame.framework.Input.java
ru.o2genum.coregame.framework.Pool.java
ru.o2genum.coregame.framework.Screen.java
ru.o2genum.coregame.framework.Sound.java
ru.o2genum.coregame.framework.Vibration.java
ru.o2genum.coregame.framework.impl.AndroidAudio.java
ru.o2genum.coregame.framework.impl.AndroidFastRenderView.java
ru.o2genum.coregame.framework.impl.AndroidFileIO.java
ru.o2genum.coregame.framework.impl.AndroidGame.java
ru.o2genum.coregame.framework.impl.AndroidGraphics.java
ru.o2genum.coregame.framework.impl.AndroidInput.java
ru.o2genum.coregame.framework.impl.AndroidOrientationHandler.java
ru.o2genum.coregame.framework.impl.AndroidSound.java
ru.o2genum.coregame.framework.impl.AndroidVibration.java
ru.o2genum.coregame.framework.impl.KeyboardHandler.java
ru.o2genum.coregame.framework.impl.MultiTouchHandler.java
ru.o2genum.coregame.framework.impl.OrientationHandler.java
ru.o2genum.coregame.framework.impl.SingleTouchHandler.java
ru.o2genum.coregame.framework.impl.TouchHandler.java
ru.o2genum.coregame.game.Core.java
ru.o2genum.coregame.game.Dot.java
ru.o2genum.coregame.game.GameActivity.java
ru.o2genum.coregame.game.GameScreen.java
ru.o2genum.coregame.game.VectorF.java
ru.o2genum.coregame.game.World.java