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;
/ * f r o m w w w . j a v a 2 s . c o 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