IVirtualLayout
public interface
feathers.layout.IVirtualLayout
Description
A layout algorithm that supports virtualization of items so that only the visible items need to be created. Useful in lists with dozens or hundreds of items are needed, but only a small subset of the items are visible at any given moment.
API overview
Constructor
Attributes
Public attributes
typicalItemHeight: Number |
The height, in pixels, of a "typical" item that is used to virtually fill in blanks for the layout |
typicalItemWidth: Number |
The width, in pixels, of a "typical" item that is used to virtually fill in blanks for the layout |
useVirtualLayout: Boolean |
Determines if virtual layout can be used |
Functions
Public functions
getVisibleIndicesAtScrollPosition ( scrollX: Number , scrollY: Number , width: Number , height: Number , itemCount: Number , result: Vector.<Number> = null ): Vector.<Number> |
Determines which indices are visible with the specified view port bounds and scroll position |
measureViewPort ( itemCount: Number , viewPortBounds: ViewPortBounds = null ): Point |
Using the typical item bounds and suggested bounds, returns a set of calculated dimensions for the view port |
Constructor
IVirtualLayout ()
Attributes
typicalItemHeight: Number
The height, in pixels, of a "typical" item that is used to virtually
fill in blanks for the layout. This value is usually set by a
component that is using the layout, such as a List
. For
instance, the List
class provides a typicalItem
property that will be used to calculate this value. If you set
typicalItemHeight
manually, your value will be completely
replaced by the value calculated by the List
. In other
words, you should use that typicalItem
property instead.
typicalItemWidth: Number
The width, in pixels, of a "typical" item that is used to virtually
fill in blanks for the layout. This value is meant to be set by a
component that is using the layout, such as a List
. For
instance, the List
class provides a typicalItem
property that will be used to calculate this value. If you set
typicalItemWidth
manually, your value will be completely
replaced by the value calculated by the List
. In other
words, you should use that typicalItem
property instead.
useVirtualLayout: Boolean
Determines if virtual layout can be used. Some components don't support virtual layouts. In those cases, the virtual layout options will be ignored.
Functions
addEventListener
(
type: String
,
listener: Function
): Void
Inherited from IFeathersEventDispatcher
See also:
loom2d.events.EventDispatcher#addEventListener()
Parameters
type: String | |
listener: Function |
dispatchEvent
(
event: Event
): Void
Inherited from IFeathersEventDispatcher
See also:
loom2d.events.EventDispatcher#dispatchEvent()
Parameters
event: Event |
dispatchEventWith
(
type: String
,
bubbles: Boolean
= false
,
data: Object
= null
): Void
Inherited from IFeathersEventDispatcher
See also:
loom2d.events.EventDispatcher#dispatchEventWith()
Parameters
type: String | |
bubbles: Boolean = false | |
data: Object = null |
getScrollPositionForIndex
(
index: Number
,
items: Vector.<DisplayObject>
,
x: Number
,
y: Number
,
width: Number
,
height: Number
): Point
Inherited from ILayout
Using the item dimensions, calculates a scroll position that will ensure that the item at a given index will be visible within the specified bounds.
Parameters
index: Number | |
items: Vector.<DisplayObject> | |
x: Number | |
y: Number | |
width: Number | |
height: Number |
getVisibleIndicesAtScrollPosition ( scrollX: Number , scrollY: Number , width: Number , height: Number , itemCount: Number , result: Vector.<Number> = null ): Vector.<Number>
Determines which indices are visible with the specified view port bounds and scroll position. Indices that aren't returned are typically not displayed and can be replaced virtually.
Parameters
scrollX: Number | |
scrollY: Number | |
width: Number | |
height: Number | |
itemCount: Number | |
result: Vector.<Number> = null |
hasEventListener
(
type: String
): Boolean
Inherited from IFeathersEventDispatcher
See also:
loom2d.events.EventDispatcher#hasEventListener()
Parameters
type: String |
layout
(
items: Vector.<DisplayObject>
,
viewPortBounds: ViewPortBounds
= null
,
result: LayoutBoundsResult
= null
): LayoutBoundsResult
Inherited from ILayout
Positions (and possibly resizes) the supplied items within the optional bounds argument. If no bounds are specified, the layout algorithm will assume that the bounds start a 0,0 and have unbounded dimensions. Returns the actual bounds of the content, which may be different than the specified bounds.
Note: The items are not absolutely restricted to appear only within the bounds. The bounds can affect positioning, but the algorithm may very well ignore them completely.
If a layout implementation needs to access accurate width
and height
values from items that are of type
IFeathersControl
, it must call validate()
manually. For performance reasons, the container that is the parent
of the items will not call validate()
before passing the
items to a layout implementation. Meeting this requirement may be as
simple as looping through the items at the beginning of
layout()
and validating all items that are Feathers UI
controls:
const itemCount:int = items.length;
for(var i:int = 0; i < itemCount; i++)
{
var item:IFeathersControl = items[i] as IFeathersControl;
if(item)
{
item.validate();
}
}
See also:
feathers.core.IFeathersControl#validate()
Parameters
items: Vector.<DisplayObject> | |
viewPortBounds: ViewPortBounds = null | |
result: LayoutBoundsResult = null |
measureViewPort ( itemCount: Number , viewPortBounds: ViewPortBounds = null ): Point
Using the typical item bounds and suggested bounds, returns a set of calculated dimensions for the view port.
Parameters
itemCount: Number | |
viewPortBounds: ViewPortBounds = null |
removeEventListener
(
type: String
,
listener: Function
): Void
Inherited from IFeathersEventDispatcher
See also:
loom2d.events.EventDispatcher#removeEventListener()
Parameters
type: String | |
listener: Function |
removeEventListeners
(
type: String
= null
): Void
Inherited from IFeathersEventDispatcher
See also:
loom2d.events.EventDispatcher#removeEventListeners()
Parameters
type: String = null |