예제 #1
0
 public async void TranslateOriginalAnimate()
 {
     MainGrid2.TranslateTo(Application.Current.MainPage.Width, 0);
     MainGrid1.TranslateTo(-(Application.Current.MainPage.Width), 0);
     //CollectionStack.TranslationY = Application.Current.MainPage.Height;
     await MainGrid.TranslateTo(0, 0);
 }
예제 #2
0
        public async void PanGestureRecognizer_PanUpdated(object sender, PanUpdatedEventArgs e)
        {
            stopwatch.Start();
            switch (e.StatusType)
            {
            case GestureStatus.Running:
                // Translate and ensure we don't pan beyond the wrapped user interface element bounds.
                if (Math.Abs(e.TotalX) > Math.Abs(e.TotalY) && MainGrid.TranslationY == 0)
                {
                    MainGrid.TranslationX =
                        Math.Min(MainGrid.TranslationX + e.TotalX, Application.Current.MainPage.Width);
                    MainGrid1.TranslationX =
                        Math.Min(MainGrid1.TranslationX + e.TotalX, Application.Current.MainPage.Width);
                    MainGrid2.TranslationX =
                        Math.Max(MainGrid2.TranslationX + e.TotalX, 0);
                    //Content.TranslationY =
                    //  Math.Max(Math.Min(0, y + e.TotalY), -Math.Abs(Content.Height - App.ScreenHeight));
                    break;
                }
                else if (MainGrid.TranslationX == 0 && e.TotalY < 0)
                {
                    MainGrid.TranslationY =
                        Math.Max(MainGrid.TranslationY + e.TotalY, -Application.Current.MainPage.Height);
                    break;
                }
                break;



            case GestureStatus.Completed:
                // Store the translation applied during the pan
                stopwatch.Stop();
                double time   = Convert.ToDouble(stopwatch.ElapsedMilliseconds);
                double speedx = MainGrid.TranslationX / time;
                double speedy = MainGrid.TranslationY / time;

                stopwatch.Reset();
                if (-MainGrid.TranslationX > (HalfWidth) && (MainGrid.TranslationX < 0) || speedx < -1)
                {
                    NextTapped(null, null);
                    MainGrid.TranslateTo(-(Application.Current.MainPage.Width), 0);

                    await MainGrid2.TranslateTo(0, 0);

                    TranslateOriginal();
                }
                else if (MainGrid.TranslationX > (HalfWidth) || Math.Abs(speedx) > 1)
                {
                    PlayPreviousitem();
                    MainGrid.TranslateTo(Application.Current.MainPage.Width, 0);

                    await MainGrid1.TranslateTo(0, 0);

                    TranslateOriginal();
                }
                else if (-MainGrid.TranslationY > App.Current.MainPage.Height / 4 || speedy < -1)
                {
                    MainGrid.TranslateTo(0, ControlsLayout.Height - App.Current.MainPage.Height);
                    await ControlsLayout.TranslateTo(0, ControlsLayout.Height - App.Current.MainPage.Height);

                    UpSvg.RotateTo(180);
                    MainCollectionView.Margin    = new Thickness(0, ControlsLayout.Height, 0, 0);
                    MainCollectionView.IsVisible = true;
                    //CollectionStack.TranslateTo(0,-((ControlsLayout.Height) - App.Current.MainPage.Height));
                }
                else
                {
                    TranslateOriginalAnimate();
                }
                break;
            }
        }