Parallax


public abstract class Parallax<PropertyT extends Property>

Known direct subclasses
RecyclerViewParallax

Implementation of Parallax class for RecyclerView.

Known indirect subclasses
DetailsParallax

Subclass of Parallax object that tracks overview row's top and bottom edge in DetailsFragment or DetailsSupportFragment.


Parallax tracks a list of dynamic Propertys typically representing foreground UI element positions on screen. Parallax keeps a list of ParallaxEffect objects which define rules to mapping property values to ParallaxTarget.

Example: // when Property "var1" changes from 15 to max value, perform parallax effect to // change myView's translationY from 0 to 100. Parallaxparallax = new Parallax

To create a ParallaxEffect, user calls addEffect with a list of PropertyMarkerValue which defines the range of Parallax.IntProperty or Parallax.FloatProperty. Then user adds ParallaxTarget into ParallaxEffect.

App may subclass Parallax.IntProperty or Parallax.FloatProperty to supply additional information about how to retrieve Property value. RecyclerViewParallax is a great example of Parallax implementation tracking child view positions on screen.

Restrictions of properties

  • FloatProperty and IntProperty cannot be mixed in one Parallax
  • Values must be in ascending order.
  • If the UI element is unknown above screen, use UNKNOWN_BEFORE.
  • if the UI element is unknown below screen, use UNKNOWN_AFTER.
  • UNKNOWN_BEFORE and UNKNOWN_AFTER are not allowed to be next to each other.
These rules will be verified at runtime.

Subclass must override updateValues to update property values and perform ParallaxEffects. Subclass may call updateValues automatically e.g. RecyclerViewParallax calls updateValues in RecyclerView scrolling. App might call updateValues manually when Parallax is unaware of the value change. For example, when a slide transition is running, RecyclerViewParallax is unaware of translation value changes; it's the app's responsibility to call updateValues in every frame of animation.

Parameters
<PropertyT extends Property>

Subclass of Parallax.IntProperty or Parallax.FloatProperty

Summary

Nested types

public class Parallax.FloatProperty extends Property

FloatProperty provide access to an index based integer type property inside Parallax.

public class Parallax.IntProperty extends Property

IntProperty provide access to an index based integer type property inside Parallax.

public class Parallax.PropertyMarkerValue<PropertyT>

Class holding a fixed value for a Property in Parallax.

Public constructors

Public methods

ParallaxEffect
addEffect(Parallax.PropertyMarkerValue[] ranges)

Create a ParallaxEffect object that will track source variable changes within a provided set of ranges.

final PropertyT

Add a new IntProperty in the Parallax object.

abstract PropertyT
createProperty(String name, int index)

Create a new Property object.

List<ParallaxEffect>

Returns a list of ParallaxEffect object which defines rules to perform mapping to multiple ParallaxTargets.

abstract float

Return the max value which is typically size of parent visible area, e.g. RecyclerView's height if we are tracking Y position of a child.

final List<PropertyT>
void

Remove all ParallaxEffect objects.

void

Remove the ParallaxEffect object.

void

Update property values and perform ParallaxEffects.

Public constructors

Parallax

Added in 1.1.0
public Parallax()

Public methods

addEffect

public ParallaxEffect addEffect(Parallax.PropertyMarkerValue[] ranges)

Create a ParallaxEffect object that will track source variable changes within a provided set of ranges.

Parameters
Parallax.PropertyMarkerValue[] ranges

A list of marker values that defines the ranges.

Returns
ParallaxEffect

Newly created ParallaxEffect object.

addProperty

Added in 1.1.0
public final PropertyT addProperty(String name)

Add a new IntProperty in the Parallax object. App may override createProperty.

Parameters
String name

Name of the property.

Returns
PropertyT

Newly created Property object.

See also
createProperty

createProperty

Added in 1.1.0
public abstract PropertyT createProperty(String name, int index)

Create a new Property object. App does not directly call this method. See addProperty.

Parameters
int index

Index of the property in this Parallax object.

Returns
PropertyT

Newly created Property object.

getEffects

Added in 1.1.0
public List<ParallaxEffectgetEffects()

Returns a list of ParallaxEffect object which defines rules to perform mapping to multiple ParallaxTargets.

Returns
List<ParallaxEffect>

A list of ParallaxEffect object.

getMaxValue

Added in 1.1.0
public abstract float getMaxValue()

Return the max value which is typically size of parent visible area, e.g. RecyclerView's height if we are tracking Y position of a child. The size can be used to calculate marker value using the provided fraction of FloatPropertyMarkerValue.

Returns
float

Size of parent visible area.

getProperties

Added in 1.1.0
public final List<PropertyT> getProperties()
Returns
List<PropertyT>

A unmodifiable list of properties.

removeAllEffects

Added in 1.1.0
public void removeAllEffects()

Remove all ParallaxEffect objects.

removeEffect

Added in 1.1.0
public void removeEffect(ParallaxEffect effect)

Remove the ParallaxEffect object.

Parameters
ParallaxEffect effect

The ParallaxEffect object to remove.

updateValues

Added in 1.1.0
@CallSuper
public void updateValues()

Update property values and perform ParallaxEffects. Subclass may override and call super.updateValues() after updated properties values.