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