This commit is contained in:
陈思海 2025-06-03 17:08:27 +08:00
parent 1f7b111a23
commit 6af2f7c370
3 changed files with 32 additions and 4 deletions

View File

@ -114,6 +114,7 @@ namespace AlicizaX.UI.RecyclerView
private int currentIndex;
public Scroller Scroller => _scroller;
public int CurrentIndex
{
get => currentIndex;
@ -140,6 +141,7 @@ namespace AlicizaX.UI.RecyclerView
public Action<int> OnIndexChanged;
public Action OnScrollValueChanged;
public Action OnMoveingChanged;
private void OnValidate()
{
@ -206,6 +208,11 @@ namespace AlicizaX.UI.RecyclerView
OnScrollValueChanged?.Invoke();
}
private void OnMoveing()
{
OnMoveingChanged?.Invoke();
}
private void OnMoveStoped()
{
if (Snap)
@ -286,6 +293,7 @@ namespace AlicizaX.UI.RecyclerView
_scroller.Snap = Snap;
_scroller.OnValueChanged.AddListener(OnScrollChanged);
_scroller.OnMoveStoped.AddListener(OnMoveStoped);
_scroller.OnMoveing.AddListener(OnMoveing);
}
}

View File

@ -9,7 +9,19 @@ namespace AlicizaX.UI.RecyclerView
void ScrollTo(float position, bool smooth = false);
}
public class ScrollerEvent : UnityEvent<float> { }
public class MoveStopEvent : UnityEvent { }
public class DraggingEvent : UnityEvent<bool> { }
public class ScrollerEvent : UnityEvent<float>
{
}
public class MoveStopEvent : UnityEvent
{
}
public class DraggingEvent : UnityEvent<bool>
{
}
public class MoveingEvent : UnityEvent
{
}
}

View File

@ -76,11 +76,18 @@ namespace AlicizaX.UI.RecyclerView
protected ScrollerEvent scrollerEvent = new();
protected MoveStopEvent moveStopEvent = new();
protected DraggingEvent draggingEvent = new();
protected MoveingEvent moveingEvent = new();
public float MaxPosition => direction == Direction.Vertical ? Mathf.Max(contentSize.y - viewSize.y, 0) : Mathf.Max(contentSize.x - viewSize.x, 0);
public float ViewLength => direction == Direction.Vertical ? viewSize.y : viewSize.x;
public MoveingEvent OnMoveing
{
get => moveingEvent;
set => moveingEvent = value;
}
public ScrollerEvent OnValueChanged
{
get => scrollerEvent;
@ -144,6 +151,7 @@ namespace AlicizaX.UI.RecyclerView
position += velocity;
OnValueChanged?.Invoke(position);
OnMoveing?.Invoke();
}
public virtual void OnScrolled(PointerEventData eventData)
@ -155,7 +163,7 @@ namespace AlicizaX.UI.RecyclerView
position += velocity;
OnValueChanged?.Invoke(position);
OnMoveing?.Invoke();
Elastic();
}