Sofia API Reference

  • Package Index
  • Class Index
  • Packages
  • sofia.app
  • sofia.content
  • sofia.data
  • sofia.graphics
    • Interfaces
    • Joint
    • PropertyTransformer
    • Classes
    • AbstractJoint
    • Anchor
    • Color
    • CoordinateSystem
    • DirectionalPad
    • DistanceJoint
    • ElasticInInterpolator
    • ElasticInOutInterpolator
    • ElasticOutInterpolator
    • FillableShape
    • FillableShape.Animator
    • Geometry
    • Image
    • LineShape
    • MotionStep
    • OvalShape
    • PointAndAnchor
    • Polygon
    • PolygonShape
    • Predicate
    • RectangleShape
    • RevoluteJoint
    • Shape
    • Shape.Animator
    • Shape.Filter
    • ShapeField
    • ShapeFilter
    • ShapeSet
    • ShapeView
    • SizeF
    • StrokedShape
    • StrokedShape.Animator
    • TextShape
    • TextShape.Animator
    • Timings
    • ViewEdges
    • ZIndexComparator
    • Enums
    • RepeatMode
    • ShapeMotion
  • sofia.util
  • sofia.view
  • sofia.widget

public class
DirectionalPad

extends RectangleShape

Inheritance

  • java.lang.Object
    • sofia.graphics.Shape
      • sofia.graphics.StrokedShape
        • sofia.graphics.FillableShape
          • sofia.graphics.RectangleShape
            • sofia.graphics.DirectionalPad

Class Overview

An on-screen directional pad (d-pad) suitable for games, based on the cross-shaped d-pad used on classic console game systems. The d-pad responds to touch events and translates them as key events (with key codes KeyEvent#KEYCODE_DPAD_*) that get sent to the ShapeView that contains the shape. The d-pad also fades out slightly when it is not being touched, so that it does not completely obscure the rest of the screen content.


Summary

Public Constructors
DirectionalPad(RectF bounds)
Creates a new directional pad with the specified bounds.
Public Methods
int getInactiveAlpha()
Gets the alpha value of the directional pad when it is inactive (has not been touched for one second).
void onAnimationDone(Animator<?> animator)
Implemented to handle the fading in/out logic of the d-pad.
void onTouchDown(MotionEvent e)
Handles a touch down event on the directional pad, mapping it to appropriate key events.
void onTouchUp(MotionEvent e)
Handles a touch up event on the directional pad, mapping it to appropriate key events.
void setInactiveAlpha(int newAlpha)
Sets the alpha value of the directional pad when it is inactive (has not been touched for one second).
Methods inherited from class sofia.graphics.RectangleShape
void createFixtures()
This method is intended for internal use only, or by advanced users subclassing one of the abstract shape types.
void draw(Canvas canvas)
Subclasses must implement this method to define how the shape is to be drawn on the canvas.
RectF getBounds()
Gets the bounding rectangle of the shape.
void setBounds(RectF newBounds)
Sets the bounding rectangle of the shape.
void setLeftTop(float left, float top)
void setRightBottom(float right, float bottom)
Methods inherited from class sofia.graphics.FillableShape
Animator<?> animate(long duration)

Gets an animator object that lets the user animate properties of the receiving shape.

void drawBitmap(Canvas canvas)
Draws the image for this shape.
int getAlpha()

A convenience method that gets the alpha (opacity) component of the shape's color.

Color getFillColor()
Gets the color used to fill the shape.
Paint getFillPaint()
Gets a Paint used to fill the shape.
Image getImage()
Gets the image used to fill this shape.
Paint getImagePaint()
Gets a Paint object suitable for drawing the image for this shape.
boolean isFilled()
Gets a value indicating whether the shape will be filled when it is drawn.
void removeImage()
Removes the image used to fill this shape.
void setAlpha(int newAlpha)
A convenience method that sets the alpha (opacity) component of the shape's color and fill color without changing the other color components.
void setFillColor(Color newFillColor)
Sets the color used to fill the shape.
void setFilled(boolean newFilled)
Sets a value indicating whether the shape will be filled when it is drawn.
void setImage(Image newImage)
Sets the image used to fill this shape.
void setImage(String imageName)
Sets the image used to fill this shape.
Methods inherited from class sofia.graphics.StrokedShape
Animator<?> animate(long duration)

Gets an animator object that lets the user animate properties of the receiving shape.

Paint getPaint()
Gets the Paint object that describes how this shape should be drawn.
Paint.Cap getStrokeCap()
Gets the stroke's cap, which determines how to treat the beginning and end of the stroke.
Paint.Join getStrokeJoin()
Gets the stroke's join type.
double getStrokeMiter()
Gets the stroke's miter value, which is used to control the behavior of miter joins when the join angle is sharp.
double getStrokeWidth()
Gets the width of the stroke.
void setStrokeCap(Paint.Cap newStrokeCap)
Sets the stroke's cap, which determines how to treat the beginning and end of the stroke.
void setStrokeJoin(Paint.Join newStrokeJoin)
Sets the stroke's join type.
void setStrokeMiter(double newStrokeMiter)
Sets the stroke's miter value, which is used to control the behavior of miter joins when the join angle is sharp.
void setStrokeWidth(double newStrokeWidth)
Sets the width of the stroke.
Methods inherited from class sofia.graphics.Shape
void addFixtureForShape(org.jbox2d.collision.shapes.Shape b2Shape)
This method should only be called internally from within #createFixtures(Body) in order to create fixtures for the shape and add them to the shape's internal list of fixtures.
void addOther(Shape newShape)
Add another shape to the same view (or composite shape) containing this shape.
Animator<?> animate(long duration)

Gets an animator object that lets the user animate properties of the receiving shape.

void applyLinearImpulse(float x, float y)
TODO document
void conditionallyRepaint()
Called to indicate that the shape needs to be repainted on the screen.
boolean contains(PointF point)
Gets a value indicating whether the specified pixel location is contained in the receiver.
boolean contains(float x, float y)

Gets a value indicating whether the specified pixel location is contained in the receiver.

abstract void createFixtures()
This method is intended for internal use only, or by advanced users subclassing one of the abstract shape types.
void destroyFixtures()
Destroys the fixtures associated with this shape.
abstract void draw(Canvas canvas)
Subclasses must implement this method to define how the shape is to be drawn on the canvas.
ViewEdges extendsOutside(RectF bounds)
Determine whether any part of this shape extends outside the given rectangle.
int getAlpha()
A convenience method that gets the alpha (opacity) component of the shape's color.
float getAngularDamping()
Gets the angular damping of the shape, which is used to reduce the angular velocity of the shape.
float getAngularVelocity()
Gets the angular velocity of the shape, in degrees per second.
Body getB2Body()
For advanced usage only.
BodyDef getB2BodyDef()

For advanced usage only.

abstract RectF getBounds()
Gets the bounding rectangle of the shape.
Color getColor()
Gets the color of the receiver.
float getDensity()
Gets the density of the shape.
float getFriction()
Gets the coefficient of friction for the shape.
float getGravityScale()
Gets the gravity scaling factory for this shape.
float getHeight()
Gets the height of the shape, in pixels.
float getLeft()
Gets the x-coordinate of the anchor point of the shape's bounding box (the top-left corner, by default).
float getLinearDamping()
Gets the linear damping of the shape, which is used to reduce the linear velocity of the shape.
PointF getLinearVelocity()
Gets the linear velocity of the center of mass of the shape, in units per second.
float getMass()

Gets the mass of this shape (which is the density of the shape multiplied by its surface area).

Paint getPaint()
Gets the Paint object that describes how this shape should be drawn.
final ShapeView getParentView()
Gets the parent of the receiver.
PointF getPosition()
Gets the location of the centroid of the shape.
PointF getPositionAnchor()
Get the current position anchor, which is an offset relative to the upper left corner of the shape that is used as the shape's "origin" for the purposes of getting/setting x-y positions.
float getRestitution()
Gets the coefficient of restitution, which controls the "bounciness" of the shape (or in more precise terms, the relationship between the velocity of the shape before and after a collision).
float getRotation()
Gets the current angle of rotation of the shape, in degrees clockwise.
final ShapeField getShapeField()
Gets the ShapeField that contains this shape.
ShapeMotion getShapeMotion()
Gets a value indicating how this shape acts with regard to motion in the physical world.
float getTop()
Gets the y-coordinate of the anchor point of the shape's bounding box (the top-left corner, by default).
Matrix getTransform()
Gets the current linear transformation that will be applied to the shape when it is drawn.
float getWidth()
Gets the width of the shape, in pixels.
float getX()
Gets the x-coordinate of the centroid of the shape.
float getY()
Gets the y-coordinate of the centroid of the shape.
int getZIndex()
Gets the z-index of the receiver.
boolean intersects(Shape otherShape)
Determine whether this shape intersects another, based on their bounding boxes.
float[] inverseTransformPoint(float x, float y)
Transforms a point on the screen into the original bounds of a shape, pre-rotation.
boolean isActive()
Gets a value indicating whether or not the shape is active.
boolean isAwake()
Gets a value indicating whether or not the shape is awake.
boolean isBullet()
Gets a value indicating whether this shape is a "bullet." Bullets are very fast moving objects that require more precise contact/collision handling than ordinary objects, and they require more processing power as a result.
boolean isFixedRotation()
Gets a value indicating whether this shape's rotation is fixed -- that is, even under a physical load, the shape will never rotate.
boolean isInFrontOf(Shape other)
Returns true if this shape is drawn in front of (later than) the other shape.
boolean isSensor()
Gets a value indicating whether or not the shape is a sensor.
boolean isVisible()
Gets a value indicating whether the receiver is visible (drawn on the screen).
void moveBy(float dx, float dy)
Moves the receiver by the specified horizontal and vertical distance.
void recreateFixtures()
Destroys and recreates the shape's fixtures.
void remove()
Remove this shape from its view (or parent).
void rotateBy(float angleDelta)
Increments the shape's rotation by the specified number of degrees, around the same pivot point that was used previously (or the center of the shape if no other pivot has been previously used).
void setActive(boolean isActive)
Sets a value indicating whether or not the shape is active.
void setAlpha(int newAlpha)
A convenience method that sets the alpha (opacity) component of the shape's color without changing the other color components.
void setAngularDamping(float newDamping)
Sets the angular damping of the shape, which is used to reduce the angular velocity of the shape.
void setAngularVelocity(float newVelocity)
Sets the angular velocity of the shape, in degrees per second.
abstract void setBounds(RectF newBounds)
Sets the bounding rectangle of the shape.
void setBullet(boolean bullet)
Sets a value indicating whether this shape is a "bullet." Bullets are very fast moving objects that require more precise contact/collision handling than ordinary objects, and they require more processing power as a result.
void setColor(Color newColor)
Sets the color of the receiver.
void setDensity(float newDensity)
Sets the density of the shape.
void setFixedRotation(boolean fixedRotation)
Sets a value indicating whether this shape's rotation is fixed -- that is, even under a physical load, the shape will never rotate.
void setFriction(float newFriction)
Set the coefficient of friction for the shape.
void setGravityScale(float gravityScale)
Sets the gravity scaling factor for the shape.
void setLeft(float x)
Sets the x-coordinate of the anchor point of the shape's bounding box (the top-left corner, by default).
void setLinearDamping(float newDamping)
Sets the linear damping of the shape, which is used to reduce the linear velocity of the shape.
void setLinearVelocity(PointF newVelocity)
Sets the linear velocity of the center of mass of the shape, in units per second.
void setLinearVelocity(float xVelocity, float yVelocity)
Sets the linear velocity of the center of mass of the shape, in units per second.
void setPosition(float x, float y)
Sets the location of the centroid of the shape.
void setPosition(PointF position)
Sets the location of the centroid of the shape.
void setPositionAnchor(PointF anchor)
Set the position anchor, which is an offset relative to the upper left corner of the shape that is used as the shape's "origin" for the purposes of getting/setting x-y positions.
void setRestitution(float newRestitution)

Sets the coefficient of restitution, which controls the "bounciness" of the shape (or in more precise terms, the relationship between the velocity of the shape before and after a collision).

void setRotation(float newRotation)
Sets the angle of rotation of the shape in degrees clockwise, using the center of the shape's bounding box as the pivot point.
void setSensor(boolean isSensor)
Gets a value indicating whether or not the shape is a sensor.
void setShapeMotion(ShapeMotion motion)
Sets a value indicating how this shape acts with regard to motion in the physical world.
void setTop(float y)
Sets the y-coordinate of the anchor point of the shape's bounding box (the top-left corner, by default).
void setVisible(boolean newVisible)
Sets a value indicating whether the receiver is visible (drawn on the screen).
void setZIndex(int newZIndex)
Sets the z-index of the receiver.
void stopAnimation()
Stops the current animation for this shape, if there is one.
String toString()
Returns a human-readable string representation of the shape.
void updateTransform(float x, float y, float angle)
TODO document
void updateTransform(float x, float y)
TODO document
void updateTransform(float angle)
TODO document
Methods inherited from class java.lang.Object
Object clone()
boolean equals(Object arg0)
void finalize()
final Class<?> getClass()
int hashCode()
final void notify()
final void notifyAll()
String toString()
final void wait()
final void wait(long arg0, int arg1)
final void wait(long arg0)

Public Constructors

public DirectionalPad (RectF bounds)

Creates a new directional pad with the specified bounds. For best results, the bounds should be square, but no checking is done to verify this.

Parameters
bounds
the bounds of the directional pad

Public Methods

public int getInactiveAlpha ()

Gets the alpha value of the directional pad when it is inactive (has not been touched for one second).

Returns

the alpha value of the directional pad when it is inactive

public void onAnimationDone (Animator<?> animator)

Implemented to handle the fading in/out logic of the d-pad. Not intended to be called by clients.

Parameters
animator
the animator
public void onTouchDown (MotionEvent e)

Handles a touch down event on the directional pad, mapping it to appropriate key events.

Parameters
e
a MotionEvent describing the touch
public void onTouchUp (MotionEvent e)

Handles a touch up event on the directional pad, mapping it to appropriate key events.

Parameters
e
a MotionEvent describing the touch
public void setInactiveAlpha (int newAlpha)

Sets the alpha value of the directional pad when it is inactive (has not been touched for one second). Be careful not to set this value too low, or it will make the directional pad difficult to see when it is not in use.

Parameters
newAlpha
the new alpha value of the directional pad when it is inactive