void ToggleShowing(bool isShowing, bool animated)
        {
            if (_contentPage == null)
            {
                _contentPage = new YoutubeStyleContentPage();
                _contentPage.ParentHeight = Height;
                PageContainer.Content     = _contentPage;
                _panGesture           = new PanGestureRecognizer();
                _panGesture.OnAction += Gesture_OnAction;
                _panGesture.IsConsumingTouchesInParallel = true;
                _contentPage.VideoPlayerView.AddGestureRecognizer(_panGesture);
            }
            var minHeight = _contentPage.MinimumHeightRequest;
            var minWidth  = _contentPage.MinimumWidthRequest;

            _contentBounds.Y      = isShowing ? 0 : Height - minHeight;
            _contentBounds.X      = isShowing ? 0 : Width - minWidth;
            _contentBounds.Width  = isShowing ? Width : minWidth;
            _contentBounds.Height = isShowing ? Height : minHeight;

            if (MediaItemsListView.SelectedItem != null)
            {
                _contentPage.Item = MediaItemsListView.SelectedItem as MediaItem;
            }
            if (animated)
            {
                PageContainer.LayoutTo(_contentBounds);
            }
            else
            {
                PageContainer.Layout(_contentBounds);
            }
        }
        void AddSomeGesturesUsingCode()
        {
            //2 options:
            //1. use the standard xamarin api. e.g. view.GestureRecgonizers.Add(yourgesturerecognizer)
            //    and then call view.ProcessGestures();
            //    this has the benefit that when Xamarin add an api hook we can remove the view.ProcessGestures call and
            //    it will all be good.
            //2. use the extension method view.AddGestureRecognizer(yourgesturerecognizer)
            //    this is easier to use; and does everything under the hood; but it's a bit more obtrusive.
            //   in all cases, until Xamarin do more to open up the api, you must use the view extension method
            //   removeGestureRecognizer
            // comment on https://bugzilla.xamarin.com/show_bug.cgi?id=30467 to get Xamarin to expand
            // IGestureRecognizer with some add/remove hooks
            var panRecognizer = new PanGestureRecognizer ();
            panRecognizer.OnAction += OnAction;
            var Box3 = new BoxView () {
                Color = Color.Olive,
            };

            MainLayout.Children.Add (Box3);
            Box3.Layout (new Rectangle (100, 400, 100, 100));
            //			Box3.AddGestureRecognizer (panRecognizer);

            var panRecognizerWith2Tocuhes = new TwinTechs.Gestures.PanGestureRecognizer ();
            panRecognizerWith2Tocuhes.OnAction += OnAction;
            panRecognizerWith2Tocuhes.MinimumNumberOfTouches = 2;
            Label2.GestureRecognizers.Add (panRecognizerWith2Tocuhes);
            Label2.ProcessGestureRecognizers ();
        }
		public PanGestureExample3 ()
		{
			InitializeComponent ();
			MainLayout.OnLayoutChildren += MainLayout_OnLayoutChildren;

			OuterView = new StackLayout {
				Padding = new Thickness (50),
				BackgroundColor = Color.Yellow
			};
			this.MainLayout.Children.Add (OuterView);
			OuterView.Layout (_outerLayoutBounds);

			Box = new BoxView {
				Color = Color.Red,
				WidthRequest = 150,
				HeightRequest = 150,
			};
			OuterView.Children.Add (Box);
			var panRecognizer = new PanGestureRecognizer ();
			panRecognizer.IsConsumingTouchesInParallel = true;
			panRecognizer.OnAction += Gesture_OnAction;
			Box.AddGestureRecognizer (panRecognizer);

			Box2 = new BoxView ();
			Box2.Color = Color.Blue;
			this.MainLayout.Children.Add (Box2);
			Box2.Layout (_box2Bounds);
			panRecognizer = new PanGestureRecognizer ();
			panRecognizer.OnAction += Gesture_OnAction;
			panRecognizer.IsConsumingTouchesInParallel = true;
			Box2.AddGestureRecognizer (panRecognizer);
			DoBoxAnimation ();

		}
예제 #4
0
        public PanGestureExample3()
        {
            InitializeComponent();
            MainLayout.OnLayoutChildren += MainLayout_OnLayoutChildren;

            OuterView = new StackLayout {
                Padding         = new Thickness(50),
                BackgroundColor = Color.Yellow
            };
            this.MainLayout.Children.Add(OuterView);
            OuterView.Layout(_outerLayoutBounds);

            Box = new BoxView {
                Color         = Color.Red,
                WidthRequest  = 150,
                HeightRequest = 150,
            };
            OuterView.Children.Add(Box);
            var panRecognizer = new PanGestureRecognizer();

            panRecognizer.IsConsumingTouchesInParallel = true;
            panRecognizer.OnAction += Gesture_OnAction;
            Box.AddGestureRecognizer(panRecognizer);

            Box2       = new BoxView();
            Box2.Color = Color.Blue;
            this.MainLayout.Children.Add(Box2);
            Box2.Layout(_box2Bounds);
            panRecognizer           = new PanGestureRecognizer();
            panRecognizer.OnAction += Gesture_OnAction;
            panRecognizer.IsConsumingTouchesInParallel = true;
            Box2.AddGestureRecognizer(panRecognizer);
            DoBoxAnimation();
        }
        void AddSomeGesturesUsingCode()
        {
            //2 options:
            //1. use the standard xamarin api. e.g. view.GestureRecgonizers.Add(yourgesturerecognizer)
            //    and then call view.ProcessGestures();
            //    this has the benefit that when Xamarin add an api hook we can remove the view.ProcessGestures call and
            //    it will all be good.
            //2. use the extension method view.AddGestureRecognizer(yourgesturerecognizer)
            //    this is easier to use; and does everything under the hood; but it's a bit more obtrusive.
            //   in all cases, until Xamarin do more to open up the api, you must use the view extension method
            //   removeGestureRecognizer
            // comment on https://bugzilla.xamarin.com/show_bug.cgi?id=30467 to get Xamarin to expand
            // IGestureRecognizer with some add/remove hooks
            var panRecognizer = new PanGestureRecognizer();

            panRecognizer.OnAction += OnAction;
            var Box3 = new BoxView()
            {
                Color = Color.Olive,
            };

            MainLayout.Children.Add(Box3);
            Box3.Layout(new Rectangle(100, 400, 100, 100));
//			Box3.AddGestureRecognizer (panRecognizer);

            var panRecognizerWith2Tocuhes = new TwinTechs.Gestures.PanGestureRecognizer();

            panRecognizerWith2Tocuhes.OnAction += OnAction;
            panRecognizerWith2Tocuhes.MinimumNumberOfTouches = 2;
            Label2.GestureRecognizers.Add(panRecognizerWith2Tocuhes);
            Label2.ProcessGestureRecognizers();
        }
		public PageScrollerControl () : base ()
		{
			_contentView = new StackLayout () {Orientation = StackOrientation.Horizontal,
				Spacing = 0
			};
			Children.Add (_contentView);
			var gesture2 = new PanGestureRecognizer ();
			gesture2.OnAction += Gesture_OnAction;
			this.AddGestureRecognizer (gesture2);
			IsClippedToBounds = true;
			Pages.CollectionChanged += Pages_CollectionChanged;
		}
		public PageScrollerControl () : base ()
		{
			Pages = new ObservableCollection<VisualElement> ();
			_contentView = new StackLayout () {Orientation = StackOrientation.Horizontal,
				Spacing = 0
			};
			Children.Add (_contentView);
			var gesture2 = new PanGestureRecognizer ();
			gesture2.OnAction += Gesture_OnAction;
			gesture2.IsConsumingTouchesInParallel = true;
			gesture2.CancelsTouchesInView = true;
			this.AddGestureRecognizer (gesture2);
			IsClippedToBounds = true;
			Pages.CollectionChanged += Pages_CollectionChanged;
		}
        public GestureScrollListExample()
        {
            InitializeComponent();
            MainLayout.OnLayoutChildren   += MainLayout_OnLayoutChildren;
            MediaItemsListView.ItemsSource = DataProvider.GetMediaItems();

            _panGesture           = new PanGestureRecognizer();
            _panGesture.OnAction += Gesture_OnAction;
            _panGesture.IsConsumingTouchesInParallel = true;
//			_panGesture.CancelsTouchesInView = true;
//			_panGesture.DelaysTouches = true;
//			_panGesture.OnGestureShouldBeginDelegate += OnGestureShouldBegin;
            MediaItemsListView.AddGestureRecognizer(_panGesture);
            MediaItemsListView.OnScroll += MediaItemsListView_OnScroll;
        }
        public GestureScrollListExample()
        {
            InitializeComponent ();
            MainLayout.OnLayoutChildren += MainLayout_OnLayoutChildren;
            MediaItemsListView.ItemsSource = DataProvider.GetMediaItems ();

            _panGesture = new PanGestureRecognizer ();
            _panGesture.OnAction += Gesture_OnAction;
            _panGesture.IsConsumingTouchesInParallel = true;
            //			_panGesture.CancelsTouchesInView = true;
            //			_panGesture.DelaysTouches = true;
            //			_panGesture.OnGestureShouldBeginDelegate += OnGestureShouldBegin;
            MediaItemsListView.AddGestureRecognizer (_panGesture);
            MediaItemsListView.OnScroll += MediaItemsListView_OnScroll;
        }
예제 #10
0
 void AddSomeGesturesUsingCode()
 {
     //2 options:
     //1. use the standard xamarin api. e.g. view.GestureRecgonizers.Add(yourgesturerecognizer)
     //    and then call view.ProcessGestures();
     //    this has the benefit that when Xamarin add an api hook we can remove the view.ProcessGestures call and
     //    it will all be good.
     //2. use the extension method view.AddGestureRecognizer(yourgesturerecognizer)
     //    this is easier to use; and does everything under the hood; but it's a bit more obtrusive.
     //   in all cases, until Xamarin do more to open up the api, you must use the view extension method
     //   removeGestureRecognizer
     // comment on https://bugzilla.xamarin.com/show_bug.cgi?id=30467 to get Xamarin to expand
     // IGestureRecognizer with some add/remove hooks
     _stackPanRecognizer           = new PanGestureRecognizer();
     _stackPanRecognizer.OnAction += OnAction;
     MyStack.AddGestureRecognizer(_stackPanRecognizer);
 }
		void AddSomeGesturesUsingCode ()
		{
			//2 options: 
			//1. use the standard xamarin api. e.g. view.GestureRecgonizers.Add(yourgesturerecognizer)
			//    and then call view.ProcessGestures();
			//    this has the benefit that when Xamarin add an api hook we can remove the view.ProcessGestures call and
			//    it will all be good.
			//2. use the extension method view.AddGestureRecognizer(yourgesturerecognizer)
			//    this is easier to use; and does everything under the hood; but it's a bit more obtrusive.
			//   in all cases, until Xamarin do more to open up the api, you must use the view extension method 
			//   removeGestureRecognizer
			// comment on https://bugzilla.xamarin.com/show_bug.cgi?id=30467 to get Xamarin to expand
			// IGestureRecognizer with some add/remove hooks
			_stackPanRecognizer = new PanGestureRecognizer ();
			_stackPanRecognizer.OnAction += OnAction;
			MyStack.AddGestureRecognizer (_stackPanRecognizer);
		}
예제 #12
0
        public PageScrollerControl() : base()
        {
            Pages        = new ObservableCollection <VisualElement> ();
            _contentView = new StackLayout()
            {
                Orientation = StackOrientation.Horizontal,
                Spacing     = 0
            };
            Children.Add(_contentView);
            var gesture2 = new PanGestureRecognizer();

            gesture2.OnAction += Gesture_OnAction;
            gesture2.IsConsumingTouchesInParallel = true;
            gesture2.CancelsTouchesInView         = true;
            this.AddGestureRecognizer(gesture2);
            IsClippedToBounds        = true;
            Pages.CollectionChanged += Pages_CollectionChanged;
        }
		public PanGestureExample2 ()
		{
			InitializeComponent ();
			MainLayout.OnLayoutChildren += MainLayout_OnLayoutChildren;
			Box = new BoxView ();
			Box.Color = Color.Red;
			this.MainLayout.Children.Add (Box);
			Box.Layout (_boxBounds);
			var panRecognizer = new PanGestureRecognizer ();
			panRecognizer.IsConsumingTouchesInParallel = true;
			panRecognizer.OnAction += Gesture_OnAction;
			Box.AddGestureRecognizer (panRecognizer);

			Box2 = new BoxView ();
			Box2.Color = Color.Blue;
			this.MainLayout.Children.Add (Box2);
			Box2.Layout (_box2Bounds);
			panRecognizer = new PanGestureRecognizer ();
			panRecognizer.OnAction += Gesture_OnAction;
			panRecognizer.IsConsumingTouchesInParallel = true;
			Box2.AddGestureRecognizer (panRecognizer);
			DoBoxAnimation ();

		}
예제 #14
0
        public PanGestureExample2()
        {
            InitializeComponent();
            MainLayout.OnLayoutChildren += MainLayout_OnLayoutChildren;
            Box       = new BoxView();
            Box.Color = Color.Red;
            this.MainLayout.Children.Add(Box);
            Box.Layout(_boxBounds);
            var panRecognizer = new PanGestureRecognizer();

            panRecognizer.IsConsumingTouchesInParallel = true;
            panRecognizer.OnAction += Gesture_OnAction;
            Box.AddGestureRecognizer(panRecognizer);

            Box2       = new BoxView();
            Box2.Color = Color.Blue;
            this.MainLayout.Children.Add(Box2);
            Box2.Layout(_box2Bounds);
            panRecognizer           = new PanGestureRecognizer();
            panRecognizer.OnAction += Gesture_OnAction;
            panRecognizer.IsConsumingTouchesInParallel = true;
            Box2.AddGestureRecognizer(panRecognizer);
            DoBoxAnimation();
        }
		void ToggleShowing (bool isShowing, bool animated)
		{
			if (_contentPage == null) {
				_contentPage = new YoutubeStyleContentPage ();
				_contentPage.ParentHeight = Height;
				PageContainer.Content = _contentPage;
				_panGesture = new PanGestureRecognizer ();
				_panGesture.OnAction += Gesture_OnAction;
				_panGesture.IsConsumingTouchesInParallel = true;
				_contentPage.VideoPlayerView.AddGestureRecognizer (_panGesture);
			}
			var minHeight = _contentPage.MinimumHeightRequest;
			var minWidth = _contentPage.MinimumWidthRequest;
			_contentBounds.Y = isShowing ? 0 : Height - minHeight;
			_contentBounds.X = isShowing ? 0 : Width - minWidth;
			_contentBounds.Width = isShowing ? Width : minWidth;
			_contentBounds.Height = isShowing ? Height : minHeight;

			if (MediaItemsListView.SelectedItem != null) {
				_contentPage.Item = MediaItemsListView.SelectedItem as MediaItem;

			}
			if (animated) {
				PageContainer.LayoutTo (_contentBounds);
			} else {
				PageContainer.Layout (_contentBounds);
			}
		}