Пример #1
0
        public void OnScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
        {
            //计算中点
            centerY = Height / 2;
            //判断中点的有效性
            if (centerY <= 0)
            {
                return;
            }
            //开始对当前显示的View进行缩放
            for (int i = 0; i < visibleItemCount; i++)
            {
                //获取item
                View temp_view = GetChildAt(i);
                //计算item的中点Y坐标
                float itemY = temp_view.Bottom - (temp_view.Height / 2);
                //计算离中点的距离
                float distance = centerY;
                if (itemY > centerY)
                {
                    distance = itemY - centerY;
                }
                else
                {
                    distance = centerY - itemY;
                }

                //根据距离进行缩放
                temp_view.ScaleY = (1.1f - (distance / centerY) < 0 ? 0 : 1.1f - (distance / centerY));
                temp_view.ScaleX = (1.1f - (distance / centerY) < 0 ? 0 : 1.1f - (distance / centerY));
                //根据距离改变透明度
                temp_view.Alpha = (1.1f - (distance / centerY) < 0 ? 0 : 1.1f - (distance / centerY));
            }
        }
Пример #2
0
            public void OnScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
            {
                var wasTracked = false;

                foreach (TrackElement t in _trackElements)
                {
                    if (!wasTracked)
                    {
                        if (t.IsSafeToTrack(view))
                        {
                            wasTracked      = true;
                            _contentOffset += t.GetDeltaY();
                            SendScrollEvent(_contentOffset);
                            t.SyncState(view);
                        }
                        else
                        {
                            t.Reset();
                            t.SyncState(view);
                        }
                    }
                    else
                    {
                        t.SyncState(view);
                    }
                }
            }
 public void OnScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
 {
     if (!IsBuildingLayOut)
     {
         Element?.OnScrolling(this, EventArgs.Empty);
     }
 }
Пример #4
0
 public static void MakeFlingAware(this AbsListView list)
 {
     list.SetOnScrollListener(new ScrollChangedListener((view, state) =>
     {
         (view.Adapter as IFlingAwareAdapter).FlingScrollActive = state == ScrollState.Fling;
     }));
 }
Пример #5
0
        public void OnScrollStateChanged(AbsListView view, [GeneratedEnum] ScrollState scrollState)
        {
            if (scrollState == 0)
            {
                // stopped
            }

            if (processingSwipe == false)
            {
                processingSwipe = true;

                if (lw.Id == view.Id)
                {
                    var yPosition = GetYPosition();
                    int currentFirstVisibleItem = lw.FirstVisiblePosition;
                    if (currentFirstVisibleItem > mLastFirstVisibleItem)
                    {
                        //Down
                        Source.FireTopSwipe(CustomListview.Swipe.DownSwipe, yPosition, currentFirstVisibleItem);
                    }
                    else if (currentFirstVisibleItem < mLastFirstVisibleItem)
                    {
                        // Up
                        Source.FireTopSwipe(CustomListview.Swipe.UpSwipe, yPosition, currentFirstVisibleItem);
                    }

                    mLastFirstVisibleItem = currentFirstVisibleItem;
                }

                processingSwipe = false;
            }
        }
 public void OnScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
 {
     if (CanLoad)
     {
         LoadData();
     }
 }
Пример #7
0
        public void OnScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
        {
            // If the total item count is zero and the previous isn't, assume the
            // list is invalidated and should be reset back to initial state
            if (totalItemCount < previousTotalItemCount)
            {
                this.currentPage            = this.startingPageIndex;
                this.previousTotalItemCount = totalItemCount;
                if (totalItemCount == 0)
                {
                    this.loading = true;
                }
            }

            // If it's still loading, we check to see if the dataset count has
            // changed, if so we conclude it has finished loading and update the current page
            // number and total item count.
            if (loading && (totalItemCount > previousTotalItemCount))
            {
                loading = false;
                previousTotalItemCount = totalItemCount;
                currentPage++;
            }

            // If it isn't currently loading, we check to see if we have breached
            // the visibleThreshold and need to reload more data.
            // If we do need to reload some more data, we execute onLoadMore to fetch the data.
            if (!loading && (firstVisibleItem + visibleItemCount + visibleThreshold) >= totalItemCount)
            {
                loading = onLoadMore(currentPage + 1, totalItemCount);
            }
        }
Пример #8
0
        /// <summary>
        /// Callback method to be invoked while the list view or grid view is being scrolled.
        /// If the view is being scrolled, this method will be called before the next frame of the scroll is rendered.
        /// In particular, it will be called before any calls to getView(int, View, ViewGroup)
        /// </summary>
        /// <param name="view">The view whose scroll state is being reported</param>
        /// <param name="scrollState">The current scroll state. One of SCROLL_STATE_TOUCH_SCROLL or SCROLL_STATE_IDLE</param>
        public void OnScrollStateChanged(AbsListView view, ScrollState scrollState)
        {
            if (this.BottomToolbar == null)
            {
                return;
            }

            if (scrollState == ScrollState.TouchScroll || scrollState == ScrollState.Fling)
            {
                this.BottomToolbar.Animate().Cancel();
                this.BottomToolbar.Animate().TranslationYBy(150);
            }
            else
            {
                if (this.IsLastItemVisible && this.LastItemIsAtBottom)
                {
                    this.BottomToolbar.Animate().Cancel();
                    this.BottomToolbar.Animate().TranslationYBy(150);
                }
                else
                {
                    int initPosY = this.BottomToolbar.ScrollY;
                    this.BottomToolbar.Animate().Cancel();
                    this.BottomToolbar.Animate().TranslationY(initPosY);
                }
            }
        }
 /// <summary>
 /// Called when the scroll has started or stopped.
 /// Pass this on to all the listeners
 /// </summary>
 /// <param name="view"></param>
 /// <param name="scrollState"></param>
 public void OnScrollStateChanged(AbsListView view, [GeneratedEnum] ScrollState scrollState)
 {
     foreach (AbsListView.IOnScrollListener onScrollListener in listeners)
     {
         onScrollListener.OnScrollStateChanged(view, scrollState);
     }
 }
Пример #10
0
 public void OnScroll(AbsListView aView, int aFirstVisibleItem, int aVisibleItemCount, int aTotalItemCount)
 {
     lock (iLock)
     {
         iVisibleScrollRange = new ScrollRange(aFirstVisibleItem, aFirstVisibleItem + aVisibleItemCount);
     }
 }
 public void OnScrollStateChanged(AbsListView view, [GeneratedEnum] ScrollState scrollState)         //called when users starts or stops scrolling, and when scolling animation stops
 {
     if (scrollState == ScrollState.Idle)
     {
         currentLastVisibleItem = ChatMessageWindow.LastVisiblePosition;
     }
 }
Пример #12
0
        public void SetFlinging(AbsListView aListView, bool aFlinging)
        {
            bool stateChanged = false;

            lock (iFlingingLists)
            {
                bool wasFlinging = iFlingingLists.Count != 0;
                if (aFlinging && !iFlingingLists.Contains(aListView))
                {
                    iFlingingLists.Add(aListView);
                }
                else if (!aFlinging && iFlingingLists.Contains(aListView))
                {
                    iFlingingLists.Remove(aListView);
                }
                bool isFlinging = iFlingingLists.Count != 0;
                if (wasFlinging && !isFlinging)
                {
                    stateChanged = true;
                }
                else if (!wasFlinging && isFlinging)
                {
                    stateChanged = true;
                }
            }
            if (stateChanged)
            {
                OnEventFlingStateChanged();
            }
        }
Пример #13
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.activity_main);

            myListView = FindViewById <AbsListView>(Resource.Id.myListView);
            items      = new List <MyPerson>()
            {
                new MyPerson()
                {
                    FirstName = "Pesho",
                    LastName  = "Peshev",
                    Age       = 20,
                    Gender    = "MALE"
                },
                new MyPerson()
                {
                    FirstName = "Gosho",
                    LastName  = "Goshov",
                    Age       = 18,
                    Gender    = "MALE"
                },
                new MyPerson()
                {
                    FirstName = "Tosho",
                    LastName  = "Toshov",
                    Age       = 25,
                    Gender    = "MALE"
                }
            };

            MyListViewAdapter adapter = new MyListViewAdapter(this, items);
        }
 void AbsListView.IOnScrollListener.OnScrollStateChanged
 (
     AbsListView objectListView,
     [GeneratedEnum] ScrollState scrollState
 )
 {
 }
Пример #15
0
 //@Override
 public void OnScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
 {
     foreach (IOnScrollListener onScrollListener in mOnScrollListeners)
     {
         onScrollListener.OnScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
     }
 }
Пример #16
0
            public void OnScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
            {
                int lastVisibleItem = firstVisibleItem + visibleItemCount - 1;

                Android.Views.View child = null;
                if (firstVisibleItem != prevFirstVisibleItem)
                {
                    child = super.GetChildAt(0);
                }

                if (prevLastVisibleItem != lastVisibleItem)
                {
                    child = super.GetChildAt(super.ChildCount - 1);
                }

                if (child != null)
                {
                    // Workaround to set newly scrolled items as valid drop targets
                    child.Visibility = ViewStates.Invisible;
                    child.Visibility = ViewStates.Visible;
                }

                prevLastVisibleItem  = lastVisibleItem;
                prevFirstVisibleItem = firstVisibleItem;
            }
Пример #17
0
 void AbsListView.IOnScrollListener.OnScrollStateChanged(AbsListView view, ScrollState scrollState)
 {
     if (scrollState == ScrollState.Idle)
     {
         UpdateChildrenControlPoints(0);
     }
 }
Пример #18
0
 public void OnScrollStateChanged(AbsListView view, ScrollState scrollState)
 {
     if (super.isScrolling)
     {
         super.SmoothScrollBy(super.scrollBy, 0);
     }
 }
 public void OnScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
 {
     if (scrollFlag)
     {
         if (firstVisibleItem > lastVisibleItemPosition)
         {
             // Slippery //Up
             if (HomePage != null)
             {
                 HomePage.ToggleFloatingActionButton = true;
             }
         }
         else if (firstVisibleItem < lastVisibleItemPosition)
         {
             // Sliding //down
             if (HomePage != null)
             {
                 HomePage.ToggleFloatingActionButton = false;
             }
         }
         else
         {
             return;
         }
         lastVisibleItemPosition = firstVisibleItem;
     }
 }
 public void OnScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
 {
     if (view is PinnedHeaderListView)
     {
         ((PinnedHeaderListView)view).configureHeaderView(firstVisibleItem);
     }
 }
        public void OnScrollStateChanged(AbsListView view, ScrollState scrollState)
        {
            if (Control == null)
            {
                return;
            }

            if (previousState != ScrollState.Idle && scrollState == ScrollState.Idle)
            {
                int count = view.ChildCount - 2; // visible views count
                int lastVisibleItemPosition = view.LastVisiblePosition - 2;

                if (view.FirstVisiblePosition == 0 && isScrollingUp)
                {
                    BaseControl.OnScrolledTop();
                }
            }

            //if (scrollState == ScrollState.Idle)
            if (!skipLastVisibleItem)
            {
                BaseControl.LastVisiblePosition = view.LastVisiblePosition - 2;
            }

            previousState = scrollState;
        }
Пример #22
0
 public void OnScrollStateChanged(AbsListView listView, ScrollState scrollState)
 {
     CoreUtility.ExecuteMethod("OnScrollStateChanged", delegate()
     {
         if (this.ViewModel != null)
         {
             if (this.ViewModel.HasMoreData)
             {
                 if (listView.LastVisiblePosition >= listView.Count - 1 - this.ViewModel.ScrollThresholdCount)
                 {
                     Container.Track.LogTrace("Getting more data");
                     this.ViewModel.DoGetMoreData(); // it has its own built-in skip mechanism
                 }
             }
             int topRowVerticalPosition = 0;
             if (this.ListView != null && this.ListView.ChildCount > 0)
             {
                 topRowVerticalPosition = this.ListView.GetChildAt(0).Top;
             }
             if (this.RefreshLayout != null)
             {
                 this.RefreshLayout.Enabled = (topRowVerticalPosition >= 0);
             }
         }
     });
 }
Пример #23
0
 public static void MakeFlingAware(this AbsListView list, Action <bool> action)
 {
     list.SetOnScrollListener(new ScrollChangedListener((view, state) =>
     {
         action.Invoke(state == ScrollState.Fling);
     }));
 }
Пример #24
0
        public void OnScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
        {
            System.Diagnostics.Debug.WriteLine(firstVisibleItem);
            if (firstVisibleItem + visibleItemCount == totalItemCount)               // Clear items, add from current half way to chunk size after last item, scroll back to old last item
            {
                var firstItem = adapter.GetItem(chunksize);
                adapter.Clear();
                for (int i = 0; i < chunksize * 2; i++)
                {
                    adapter.Add(firstItem.AddDays(i));
                }
                adapter.NotifyDataSetChanged();
                view.SetSelection(chunksize - visibleItemCount - 1);
            }
            else if (firstVisibleItem == 0)                     // Clear items, add from chunk size before first item, scroll back to old first item

            {
                var lastItem = adapter.GetItem(chunksize);
                adapter.Clear();
                for (int i = chunksize * 2 - 1; i >= 0; i--)
                {
                    adapter.Add(lastItem.AddDays(-i));
                }
                adapter.NotifyDataSetChanged();
                view.SetSelection(chunksize - 1);
            }
        }
 public void OnScrollStateChanged(AbsListView view, ScrollState scrollState)
 {
     if (psl.mDelegateOnScrollListener != null)                   // delegate
     {
         psl.mDelegateOnScrollListener.OnScrollStateChanged(view, scrollState);
     }
 }
Пример #26
0
        /// <summary>
        /// Bind this class to the goto top button in the parent view
        /// </summary>
        /// <param name="parentView"></param>
        /// <param name="listView"></param>
        public void BindControl(View parentView, AbsListView listView)
        {
            if (parentView != null)
            {
                fab = parentView.FindViewById <FloatingActionButton>(Resource.Id.goto_top_button);
                if (fab != null)
                {
                    // Hide the button initially
                    fab.Visibility = ViewStates.Gone;

                    // Hook into the listview's scroll events
                    listView.SetOnScrollListener(this);

                    // Scroll back to the top when the button is clicked
                    fab.Click += (sender, e) =>
                    {
                        if (listView.FirstVisiblePosition > 20)
                        {
                            listView.SetSelection(20);
                        }
                        listView.SmoothScrollToPosition(0);
                    };
                }
            }
            else
            {
                fab = null;
            }
        }
Пример #27
0
 public void OnScrollStateChanged(AbsListView view, ScrollState scrollState)
 {
     if (OnScrollListener != null)
     {
         OnScrollListener.OnScrollStateChanged(view, scrollState);
     }
 }
Пример #28
0
 public static void MakeFlingAware(this AbsListView list, Action <bool> action)
 {
     list.SetOnScrollListener(new OnScrollListener(null, tuple =>
     {
         action.Invoke(tuple.Item2 == ScrollState.Fling);
     }));
 }
Пример #29
0
 public void OnScrollStateChanged(AbsListView view, [GeneratedEnum] ScrollState scrollState)
 {
     if (scrollState == ScrollState.Idle)
     {
         Element?.OnScrolled(this, EventArgs.Empty);
     }
 }
Пример #30
0
 void IOnScrollListener.OnScrollStateChanged(AbsListView view, ScrollState scrollState)
 {
     if (_onScrollListener != null)
     {
         _onScrollListener.OnScrollStateChanged(view, scrollState);
     }
 }