Android Open Source - HexNanoController_Android Toggle Button






From Project

Back to project page HexNanoController_Android.

License

The source code is released under:

Code license GNU GPL v2 http://www.gnu.org/licenses/gpl.html Content license CC BY-NC-SA 4.0 http://creativecommons.org/licenses/by-nc-sa/4.0/

If you think the Android project HexNanoController_Android 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.hexairbot.hexmini.ui;
/* ww w.  j  av  a2s. c  o m*/
import javax.microedition.khronos.opengles.GL10;

import android.content.res.Resources;
import android.graphics.Canvas;

import com.hexairbot.hexmini.ui.gl.GLSprite;


public class ToggleButton extends Button
{
  private boolean checked;
  private float lightAlpha;
  private long prevNano;
  private int alphaCoef;
  
  private GLSprite spriteGlow;
  private GLSprite spriteCheckedNormal;
  private GLSprite spriteCheckedPressed;
  
  public ToggleButton(Resources resources, int normalBitmapId,
      int pressedBitmapId, int checkedNormalBitmapId, int checkedPressedBitmapId, 
      int glowBitmapId, Align align) 
  {
    super(resources, normalBitmapId, pressedBitmapId, align);
    
    spriteGlow = new GLSprite(resources, glowBitmapId);
    spriteCheckedNormal = new GLSprite(resources, checkedNormalBitmapId);
    spriteCheckedPressed = new GLSprite(resources, checkedPressedBitmapId);
    
    lightAlpha = 1.0f;
    alphaCoef = -1;
    checked = false;
  }

  
  @Override
  public void init(GL10 gl, int program) 
  {
    super.init(gl, program);
    spriteGlow.init(gl, program);
    spriteCheckedNormal.init(gl, program);
    spriteCheckedPressed.init(gl, program);
  }


  @Override
  public void surfaceChanged(GL10 gl, int width, int height) 
  {
    super.surfaceChanged(gl, width, height);
    spriteGlow.onSurfaceChanged(gl, width, height);
    spriteCheckedNormal.onSurfaceChanged(gl, width, height);
        spriteCheckedPressed.onSurfaceChanged(gl, width, height);
  }


  @Override
  public void draw(GL10 gl) 
  {
    if (bounds != null && visible) {
      if (checked) {
        long nano = System.nanoTime();
        if (nano - prevNano > 100) {
          prevNano = nano;
          
          lightAlpha += 0.05 * alphaCoef;
    
          if (lightAlpha < 0) {
            alphaCoef = 1;
          } else if (lightAlpha > 1) {
            alphaCoef = -1;
          }
          
          spriteGlow.setAlpha(lightAlpha);
        }

        if (isPressed) {
            spriteCheckedPressed.onDraw(gl,  bounds.left, surfaceHeight - bounds.top - spritePressed.height);
        } else {
            spriteCheckedNormal.onDraw(gl,  bounds.left, surfaceHeight - bounds.top - spritePressed.height);
        }
        
        spriteGlow.onDraw(gl,  bounds.left, surfaceHeight - bounds.top - spriteGlow.height);
      } else {
          if (isPressed) {
              spritePressed.onDraw(gl,  bounds.left, surfaceHeight - bounds.top - spriteNormal.height);
          } else {
              spriteNormal.onDraw(gl,  bounds.left, surfaceHeight - bounds.top - spriteNormal.height);
          }
      }
    }
  }

  
  @Override
  public void draw(Canvas canvas) {
    if (bounds != null && visible) {
      if (checked) {
        spritePressed.onDraw(canvas, bounds.left, bounds.top);
      } else {
        spriteNormal.onDraw(canvas,  bounds.left, bounds.top);
      }
    }
  }
  

    public void setChecked(boolean checked)
  {
    this.checked = checked;
  }


  @Override
  public void setViewAndProjectionMatrices(float[] vMatrix, float[] projMatrix)
  {
    super.setViewAndProjectionMatrices(vMatrix, projMatrix);
    spriteGlow.setViewAndProjectionMatrices(vMatrix, projMatrix);
    spriteCheckedNormal.setViewAndProjectionMatrices(vMatrix, projMatrix);
    spriteCheckedPressed.setViewAndProjectionMatrices(vMatrix, projMatrix);
  }
}




Java Source Code List

.FileHelper.java
.Input.java
.Output.java
.Serializable.java
com.hexairbot.hexmini.HelpActivity.java
com.hexairbot.hexmini.HexMiniApplication.java
com.hexairbot.hexmini.HudActivity.java
com.hexairbot.hexmini.HudViewControllerDelegate.java
com.hexairbot.hexmini.HudViewController.java
com.hexairbot.hexmini.SettingsDialogDelegate.java
com.hexairbot.hexmini.SettingsDialog.java
com.hexairbot.hexmini.SettingsViewControllerDelegate.java
com.hexairbot.hexmini.SettingsViewController.java
com.hexairbot.hexmini.ViewController.java
com.hexairbot.hexmini.adapter.SettingsViewAdapter.java
com.hexairbot.hexmini.ble.BleConnectinManagerDelegate.java
com.hexairbot.hexmini.ble.BleConnectinManager.java
com.hexairbot.hexmini.ble.BluetoothLeService.java
com.hexairbot.hexmini.gestures.EnhancedGestureDetector.java
com.hexairbot.hexmini.modal.ApplicationSettings.java
com.hexairbot.hexmini.modal.Channel.java
com.hexairbot.hexmini.modal.OSDCommon.java
com.hexairbot.hexmini.modal.Transmitter.java
com.hexairbot.hexmini.sensors.DeviceOrientationChangeDelegate.java
com.hexairbot.hexmini.sensors.DeviceOrientationManager.java
com.hexairbot.hexmini.sensors.DeviceSensorManagerWrapper.java
com.hexairbot.hexmini.sensors.SensorManagerWrapper.java
com.hexairbot.hexmini.services.ConnectStateManager.java
com.hexairbot.hexmini.services.IpcControlService.java
com.hexairbot.hexmini.services.IpcProxy.java
com.hexairbot.hexmini.services.NavData.java
com.hexairbot.hexmini.services.OnIpcConnectChangedListener.java
com.hexairbot.hexmini.services.VIConfig.java
com.hexairbot.hexmini.ui.Button.java
com.hexairbot.hexmini.ui.Image.java
com.hexairbot.hexmini.ui.Indicator.java
com.hexairbot.hexmini.ui.Sprite.java
com.hexairbot.hexmini.ui.Text.java
com.hexairbot.hexmini.ui.ToggleButton.java
com.hexairbot.hexmini.ui.UIRenderer.java
com.hexairbot.hexmini.ui.control.CustomSeekBar.java
com.hexairbot.hexmini.ui.control.ViewPagerIndicator.java
com.hexairbot.hexmini.ui.gl.GLSprite.java
com.hexairbot.hexmini.ui.joystick.AcceleratorJoystick.java
com.hexairbot.hexmini.ui.joystick.AnalogueJoystick.java
com.hexairbot.hexmini.ui.joystick.JoystickBase.java
com.hexairbot.hexmini.ui.joystick.JoystickFactory.java
com.hexairbot.hexmini.ui.joystick.JoystickListener.java
com.hexairbot.hexmini.util.DebugHandler.java
com.hexairbot.hexmini.util.FontUtils.java
com.hexairbot.hexmini.util.SystemUiHiderBase.java
com.hexairbot.hexmini.util.SystemUiHiderHoneycomb.java
com.hexairbot.hexmini.util.SystemUiHider.java
com.hexairbot.hexmini.util.SystemUtil.java
com.hexairbot.hexmini.util.TextureUtils.java
fix.android.opengl.GLES20.java