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