Parallax
abstract class Parallax<PropertyT : Property?>
RecyclerViewParallax |
Implementation of |
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.
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 : Property?> |
Subclass of |
Summary
Nested types |
|---|
class Parallax.FloatProperty : PropertyFloatProperty provide access to an index based integer type property inside |
class Parallax.IntProperty : PropertyIntProperty provide access to an index based integer type property inside |
class Parallax.PropertyMarkerValue<PropertyT>Class holding a fixed value for a Property in |
Public constructors |
|---|
Parallax() |
Public functions |
|
|---|---|
ParallaxEffect! |
addEffect(ranges: Array<Parallax.PropertyMarkerValue!>!)Create a |
PropertyT! |
addProperty(name: String!)Add a new IntProperty in the Parallax object. |
abstract PropertyT! |
createProperty(name: String!, index: Int)Create a new Property object. |
(Mutable)List<ParallaxEffect!>! |
Returns a list of |
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. |
(Mutable)List<PropertyT!>! |
|
Unit |
Remove all |
Unit |
removeEffect(effect: ParallaxEffect!)Remove the |
Unit |
Update property values and perform |
Public constructors
Public functions
addEffect
fun addEffect(ranges: Array<Parallax.PropertyMarkerValue!>!): ParallaxEffect!
Create a ParallaxEffect object that will track source variable changes within a provided set of ranges.
| Parameters | |
|---|---|
ranges: Array<Parallax.PropertyMarkerValue!>! |
A list of marker values that defines the ranges. |
| Returns | |
|---|---|
ParallaxEffect! |
Newly created ParallaxEffect object. |
addProperty
fun addProperty(name: String!): PropertyT!
Add a new IntProperty in the Parallax object. App may override createProperty.
| Parameters | |
|---|---|
name: String! |
Name of the property. |
| Returns | |
|---|---|
PropertyT! |
Newly created Property object. |
| See also | |
|---|---|
createProperty |
createProperty
abstract fun createProperty(name: String!, index: Int): PropertyT!
Create a new Property object. App does not directly call this method. See addProperty.
| Parameters | |
|---|---|
name: String! |
Name of the property in this Parallax object |
index: Int |
Index of the property in this Parallax object. |
| Returns | |
|---|---|
PropertyT! |
Newly created Property object. |
getEffects
fun getEffects(): (Mutable)List<ParallaxEffect!>!
Returns a list of ParallaxEffect object which defines rules to perform mapping to multiple ParallaxTargets.
| Returns | |
|---|---|
(Mutable)List<ParallaxEffect!>! |
A list of |
getMaxValue
abstract fun getMaxValue(): 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. The size can be used to calculate marker value using the provided fraction of FloatPropertyMarkerValue.
| Returns | |
|---|---|
Float |
Size of parent visible area. |
removeEffect
fun removeEffect(effect: ParallaxEffect!): Unit
Remove the ParallaxEffect object.
| Parameters | |
|---|---|
effect: ParallaxEffect! |
The |
updateValues
@CallSuper
fun updateValues(): Unit
Update property values and perform ParallaxEffects. Subclass may override and call super.updateValues() after updated properties values.