Android Open Source - DivisionByZero Zoom Control






From Project

Back to project page DivisionByZero.

License

The source code is released under:

Apache License

If you think the Android project DivisionByZero 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 com.ggstudios.divisionbyzero;
/*from ww w  .  j  a v  a 2 s  . co m*/
import com.ggstudios.divisionbyzero.Button.OnClickListener;

public class ZoomControl extends Drawable implements Clickable {

  private static final float ZOOM_INCREMENT = 0.25f;

  private Button btnZoomIn, btnZoomOut;

  public ZoomControl() {}

  private static class ZoomAnimation implements Updatable{

    private static final float DURATION = 0.3f;
    private float delta;
    private float time;
    private float base;

    private boolean finished = true;

    public void setDeltaZoom(float delta) {
      if(finished) {
        this.delta = delta;
        base = Core.zoom;
        time = 0;
        finished = false;
      } else {
        this.delta += delta;
        base = Core.zoom;
        time = 0;
      }
    }

    @Override
    public boolean update(float dt) {
      boolean result;
      
      float oldZoom = Core.zoom;
      
      time += dt;
      if(time < DURATION) {
        float newZoom;
        float t =  time / (DURATION /2f);
        if (t < 1) {
          newZoom = delta/2*t*t + base;
        } else {
          t--;
          newZoom = -delta/2 * (t*(t-2) - 1) + base;
        }
        
        result = Core.game.setZoom(newZoom);
      } else {
        Core.game.setZoom(base + delta);
        result = false;
      }
      
      if(!result) {
        finished = true;
      } else {
        float a_x = (0.5f) * ((Core.canvasWidth  / Core.zoom) - (Core.canvasWidth  / oldZoom));
        float a_y = (0.5f) * ((Core.canvasHeight  / Core.zoom) - (Core.canvasHeight / oldZoom));
        Core.offX += a_x;
        Core.offY += a_y;
        
        Core.game.onScrolled();
      }
      
      return result;
    }

  }

  private ZoomAnimation zoomAnimation = new ZoomAnimation();

  public void build() {
    btnZoomIn = new Button(Core.canvasWidth - Core.SDP * 1.5f, Core.SDP_H, Core.SDP, Core.SDP, R.drawable.zoom_control_in);
    btnZoomOut = new Button(Core.canvasWidth - Core.SDP * 1.5f, Core.SDP * 1.5f, Core.SDP, Core.SDP, R.drawable.zoom_control_out);

    btnZoomIn.setOnClickListener(new OnClickListener() {

      @Override
      public void onClick(Button sender) {
        zoomAnimation.setDeltaZoom(ZOOM_INCREMENT);
        if(!Core.gu.hasUiUpdatable(zoomAnimation)) {
          Core.gu.addUiUpdatable(zoomAnimation);
        }
      }

    });

    btnZoomOut.setOnClickListener(new OnClickListener() {

      @Override
      public void onClick(Button sender) {
        zoomAnimation.setDeltaZoom(-ZOOM_INCREMENT);
        if(!Core.gu.hasUiUpdatable(zoomAnimation)) {
          Core.gu.addUiUpdatable(zoomAnimation);
        }
      }

    });
  }

  @Override
  public void draw(float offX, float offY) {
    btnZoomIn.draw(0, 0);
    btnZoomOut.draw(0, 0);
  }

  @Override
  public void refresh() {
    btnZoomIn.refresh();
    btnZoomOut.refresh();
  }

  @Override
  public boolean onTouchEvent(int action, float x, float y) {
    return btnZoomIn.onTouchEvent(action, x, y) || btnZoomOut.onTouchEvent(action, x, y);  
  }

}




Java Source Code List

com.ggstudios.divisionbyzero.ActivityAbout.java
com.ggstudios.divisionbyzero.ActivityLevelSelection.java
com.ggstudios.divisionbyzero.ActivityMainMenu.java
com.ggstudios.divisionbyzero.ActivitySettings.java
com.ggstudios.divisionbyzero.ActivitySplashScreen.java
com.ggstudios.divisionbyzero.ApplicationMain.java
com.ggstudios.divisionbyzero.BaseActivity.java
com.ggstudios.divisionbyzero.BaseDialog.java
com.ggstudios.divisionbyzero.BulletManager.java
com.ggstudios.divisionbyzero.Bullet.java
com.ggstudios.divisionbyzero.Button.java
com.ggstudios.divisionbyzero.Circle.java
com.ggstudios.divisionbyzero.ClickableCollection.java
com.ggstudios.divisionbyzero.Clickable.java
com.ggstudios.divisionbyzero.ConfirmDialog.java
com.ggstudios.divisionbyzero.Core.java
com.ggstudios.divisionbyzero.CustomGLSurfaceView.java
com.ggstudios.divisionbyzero.DialogManager.java
com.ggstudios.divisionbyzero.DrawableCollection.java
com.ggstudios.divisionbyzero.DrawableString.java
com.ggstudios.divisionbyzero.Drawable.java
com.ggstudios.divisionbyzero.EndDialog.java
com.ggstudios.divisionbyzero.Event.java
com.ggstudios.divisionbyzero.ExplosionGenerator.java
com.ggstudios.divisionbyzero.ExtrasManager.java
com.ggstudios.divisionbyzero.FontManager.java
com.ggstudios.divisionbyzero.GameRenderer.java
com.ggstudios.divisionbyzero.GameUpdater.java
com.ggstudios.divisionbyzero.Game.java
com.ggstudios.divisionbyzero.Grid.java
com.ggstudios.divisionbyzero.Hud.java
com.ggstudios.divisionbyzero.InGameMenu.java
com.ggstudios.divisionbyzero.InfoDialog.java
com.ggstudios.divisionbyzero.Label.java
com.ggstudios.divisionbyzero.LevelManager.java
com.ggstudios.divisionbyzero.LevelMap.java
com.ggstudios.divisionbyzero.LineGuide.java
com.ggstudios.divisionbyzero.MainActivity.java
com.ggstudios.divisionbyzero.Map.java
com.ggstudios.divisionbyzero.MessageDialog.java
com.ggstudios.divisionbyzero.ParticleEngine.java
com.ggstudios.divisionbyzero.PathFinder.java
com.ggstudios.divisionbyzero.PauseMenu.java
com.ggstudios.divisionbyzero.PictureBox.java
com.ggstudios.divisionbyzero.Player.java
com.ggstudios.divisionbyzero.PopupMenu.java
com.ggstudios.divisionbyzero.Rectangle.java
com.ggstudios.divisionbyzero.Shader.java
com.ggstudios.divisionbyzero.SpawnManager.java
com.ggstudios.divisionbyzero.SpriteAnimation.java
com.ggstudios.divisionbyzero.SpriteManager.java
com.ggstudios.divisionbyzero.Sprite.java
com.ggstudios.divisionbyzero.Statbar.java
com.ggstudios.divisionbyzero.StateManager.java
com.ggstudios.divisionbyzero.TargetRectangle.java
com.ggstudios.divisionbyzero.TextureManager.java
com.ggstudios.divisionbyzero.TowerInfoDialog.java
com.ggstudios.divisionbyzero.TowerLibrary.java
com.ggstudios.divisionbyzero.TowerManager.java
com.ggstudios.divisionbyzero.TowerMenu.java
com.ggstudios.divisionbyzero.Tower.java
com.ggstudios.divisionbyzero.UpdatableCollection.java
com.ggstudios.divisionbyzero.Updatable.java
com.ggstudios.divisionbyzero.UpgradeDialog.java
com.ggstudios.divisionbyzero.Utils.java
com.ggstudios.divisionbyzero.VBO.java
com.ggstudios.divisionbyzero.WaveControlDialog.java
com.ggstudios.divisionbyzero.WaveControlHud.java
com.ggstudios.divisionbyzero.ZoomControl.java
com.ggstudios.utils.BitmapUtils.java
com.ggstudios.utils.BufferUtils.java
com.ggstudios.utils.DebugLog.java
com.ggstudios.utils.ShaderUtils.java
com.ggstudios.widget.LevelMapBackground.java
fix.android.opengl.GLES20.java