# Class TouchControls

java.lang.Object
com.codename1.gaming.TouchControls

public class TouchControls extends Object

On-screen controls for touch devices: an optional analog `VirtualJoystick` plus any number of `VirtualButton`s. The framework draws them over the game and routes touches into the view's `GameInput`, so a touch game reads input exactly like a keyboard game -- `GameInput#isGameKeyDown(int)`, `GameInput#isKeyDown(int)` and the joystick's analog `GameInput#getAxisX()` / `getAxisY()` all work whether the player is on a phone or a desktop.

Get the instance from `GameView#getControls()` and add the controls you want, placing them in the view's pixel coordinates (origin at the top left):

    int fire = Display.getInstance().getKeyCode(Display.GAME_FIRE);
    getControls().addJoystick(140, getHeight() - 140, 90);
    getControls().addButton(fire, getWidth() - 120, getHeight() - 120, 55).setLabel("A");

Multi-touch is supported, so the player can steer with the stick and press a button at the same time.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `BOTTOM`
  Vertical anchor: pin to the bottom safe-area edge.
  `static final int`
  `CENTER`
  Horizontal/vertical anchor: center on the safe area.
  `static final int`
  `LEFT`
  Horizontal anchor: pin to the left safe-area edge.
  `static final int`
  `RIGHT`
  Horizontal anchor: pin to the right safe-area edge.
  `static final int`
  `TOP`
  Vertical anchor: pin to the top safe-area edge.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `VirtualButton`
  `addButton(int keyCode, float centerX, float centerY, float radius)`
  Adds a button mapped to the given key code.
  `VirtualButton`
  `addButton(int keyCode, float radius, int hAlign, int vAlign, float margin)`
  Adds a button anchored to a corner of the view's safe area (see `#addJoystick(float, int, int, float)`), so it stays inside the safe area and follows rotation automatically.
  `VirtualJoystick`
  `addJoystick(float centerX, float centerY, float radius)`
  Adds (or replaces) the analog joystick at the given center and radius.
  `VirtualJoystick`
  `addJoystick(float radius, int hAlign, int vAlign, float margin)`
  Adds (or replaces) the analog joystick anchored to a corner of the view's safe area, so it stays clear of notches and home indicators and follows rotation automatically (the framework repositions it; you never recompute coordinates).
  `VirtualJoystick`
  `getJoystick()`
  `boolean`
  `isVisible()`
  `void`
  `setVisible(boolean visible)`
  Whether the controls are drawn and active.

  ### Methods inherited from class Object

  `clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### LEFT

    public static final int LEFT
    Horizontal anchor: pin to the left safe-area edge.
    See Also:
      - Constant Field Values

  - ### CENTER

    public static final int CENTER
    Horizontal/vertical anchor: center on the safe area.
    See Also:
      - Constant Field Values

  - ### RIGHT

    public static final int RIGHT
    Horizontal anchor: pin to the right safe-area edge.
    See Also:
      - Constant Field Values

  - ### TOP

    public static final int TOP
    Vertical anchor: pin to the top safe-area edge.
    See Also:
      - Constant Field Values

  - ### BOTTOM

    public static final int BOTTOM
    Vertical anchor: pin to the bottom safe-area edge.
    See Also:
      - Constant Field Values

- ## Method Details

  - ### addJoystick

    public VirtualJoystick addJoystick(float centerX, float centerY, float radius)
    Adds (or replaces) the analog joystick at the given center and radius. Returns it so you can tune the dead zone etc.

  - ### addJoystick

    public VirtualJoystick addJoystick(float radius, int hAlign, int vAlign, float margin)
    Adds (or replaces) the analog joystick anchored to a corner of the view's safe area, so it stays clear of notches and home indicators and follows rotation automatically (the framework repositions it; you never recompute coordinates). `hAlign` is one of `#LEFT` / `#CENTER` / `#RIGHT`, `vAlign` one of `#TOP` / `#CENTER` / `#BOTTOM`, and `margin` is the gap from the safe-area edges.

  - ### addButton

    public VirtualButton addButton(int keyCode, float centerX, float centerY, float radius)
    Adds a button mapped to the given key code. Use `com.codename1.ui.Display#getKeyCode(int)` to map a game action.

  - ### addButton

    public VirtualButton addButton(int keyCode, float radius, int hAlign, int vAlign, float margin)
    Adds a button anchored to a corner of the view's safe area (see `#addJoystick(float, int, int, float)`), so it stays inside the safe area and follows rotation automatically.

  - ### setVisible

    public void setVisible(boolean visible)
    Whether the controls are drawn and active. Hide them on platforms with a real keyboard if you prefer.

  - ### isVisible

    public boolean isVisible()

  - ### getJoystick

    public VirtualJoystick getJoystick()