using UnityEngine;
namespace AlicizaX.UI.RecyclerView
{
public interface ILayoutManager
{
///
/// 滚动时,刷新整个页面的布局
///
void UpdateLayout();
///
/// 为 ViewHolder 设置布局
///
///
///
void Layout(ViewHolder viewHolder, int index);
///
/// 设置 Content 大小
///
void SetContentSize();
///
/// 计算 Content 的大小
///
///
Vector2 CalculateContentSize();
///
/// 计算第 index 个 ViewHolder 到顶部的距离
///
///
///
Vector2 CalculatePosition(int index);
///
/// 计算 ViewHolder 相对于内容长度的偏移
///
///
Vector2 CalculateContentOffset();
///
/// 计算 ViewHolder 相对于视口的偏移
///
///
Vector2 CalculateViewportOffset();
///
/// 获取当前显示的第一个 ViewHolder 下标
///
///
int GetStartIndex();
///
/// 获取当前显示的最后一个 ViewHolder 下标
///
///
int GetEndIndex();
///
/// 数据下标转换成在布局中对应的位置
///
///
///
float IndexToPosition(int index);
///
/// 在布局中的位置转换成数据下标
///
///
///
int PositionToIndex(float position);
///
/// 滚动时,item 对应的动画
///
void DoItemAnimation();
///
/// 判断第一个 ViewHolder 是否完全可见
///
/// 数据的真实下标
///
bool IsFullVisibleStart(int index);
///
/// 判断第一个 ViewHolder 是否完全不可见
///
/// 数据的真实下标
///
bool IsFullInvisibleStart(int index);
///
/// 判定最后一个 ViewHolder 是否完全可见
///
///
///
bool IsFullVisibleEnd(int index);
///
/// 判定最后一个 ViewHolder 是否完全不可见
///
///
///
bool IsFullInvisibleEnd(int index);
///
/// 判定第 index ViewHolder是否可见
///
///
///
bool IsVisible(int index);
}
}