You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
2.6 KiB
C#

using UnityEngine;
using FairyGUI;
public class PullToRefreshMain : MonoBehaviour
{
GComponent _mainView;
GList _list1;
GList _list2;
void Awake()
{
Application.targetFrameRate = 60;
Stage.inst.onKeyDown.Add(OnKeyDown);
UIObjectFactory.SetPackageItemExtension("ui://PullToRefresh/Header", typeof(ScrollPaneHeader));
}
void Start()
{
_mainView = this.GetComponent<UIPanel>().ui;
_list1 = _mainView.GetChild("list1").asList;
_list1.itemRenderer = RenderListItem1;
_list1.SetVirtual();
_list1.numItems = 1;
_list1.scrollPane.onPullDownRelease.Add(OnPullDownToRefresh);
_list2 = _mainView.GetChild("list2").asList;
_list2.itemRenderer = RenderListItem2;
_list2.SetVirtual();
_list2.numItems = 1;
_list2.scrollPane.onPullUpRelease.Add(OnPullUpToRefresh);
}
void RenderListItem1(int index, GObject obj)
{
GButton item = obj.asButton;
item.title = "Item " + (_list1.numItems - index - 1);
}
void RenderListItem2(int index, GObject obj)
{
GButton item = obj.asButton;
item.title = "Item " + index;
}
void OnPullDownToRefresh()
{
ScrollPaneHeader header = (ScrollPaneHeader)_list1.scrollPane.header;
if (header.ReadyToRefresh)
{
header.SetRefreshStatus(2);
_list1.scrollPane.LockHeader(header.sourceHeight);
//Simulate a async resquest
Timers.inst.Add(2, 1, (object param) =>
{
_list1.numItems += 5;
//Refresh completed
header.SetRefreshStatus(3);
_list1.scrollPane.LockHeader(35);
Timers.inst.Add(2, 1, (object param2) =>
{
header.SetRefreshStatus(0);
_list1.scrollPane.LockHeader(0);
});
});
}
}
void OnPullUpToRefresh()
{
GComponent footer = (GComponent)_list2.scrollPane.footer;
footer.GetController("c1").selectedIndex = 1;
_list2.scrollPane.LockFooter(footer.sourceHeight);
//Simulate a async resquest
Timers.inst.Add(2, 1, (object param) =>
{
_list2.numItems += 5;
//Refresh completed
footer.GetController("c1").selectedIndex = 0;
_list2.scrollPane.LockFooter(0);
});
}
void OnKeyDown(EventContext context)
{
if (context.inputEvent.keyCode == KeyCode.Escape)
{
Application.Quit();
}
}
}