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); } }