예제 #1
0
        public StateButton()
        {
            var button = new Forms9Patch.Frame
            {
                //Text = "Click me",
                //ToggleBehavior = true,
                BackgroundColor = Color.NavajoWhite,
                OutlineRadius   = 5,
                //BackgroundImage = new Forms9Patch.Image("Forms9PatchDemo.Resources.button"),
            };

            button.Content = new Xamarin.Forms.Label {
                Text = "Click me"
            };

            var listener = FormsGestures.Listener.For(button);


            var hasShadowSwitch = new Switch();

            hasShadowSwitch.Toggled += (sender, e) => button.HasShadow = e.Value;

            var hasOutlineSwitch = new Switch();

            hasOutlineSwitch.Toggled += (sender, e) => button.OutlineWidth = e.Value ? 1 : 0;


            Padding = 20;
            Content = new StackLayout
            {
                Children =
                {
                    new Label {
                        Text = "HasShadow"
                    },
                    hasShadowSwitch,
                    new Label {
                        Text = "HasOutline"
                    },
                    hasOutlineSwitch,

                    button,
                }
            };

            listener.Tapped += (sender, e) =>
                               //button.Clicked += (sender, e) =>
            {
                if (button.BackgroundImage == null)
                {
                    button.BackgroundImage = new Forms9Patch.Image("Forms9PatchDemo.Resources.button");
                }
                else
                {
                    button.BackgroundImage = null;
                }
            };
        }
예제 #2
0
        Forms9Patch.Frame GenerateFrame()
        {
            var frame = new Forms9Patch.Frame
            {
                Content = new Forms9Patch.Label("CONTENT")
                {
                    TextColor = Color.Orange, HorizontalTextAlignment = TextAlignment.Center, VerticalTextAlignment = TextAlignment.Center, FontAttributes = FontAttributes.Bold
                },
            };

            return(frame);
        }
예제 #3
0
        public ZenmekPage()
        {
            ibStartStop = new Forms9Patch.StateButton
            {
                DefaultState = new Forms9Patch.ButtonState
                {
                    BackgroundImage = new Forms9Patch.Image
                    {
                        Source = Forms9Patch.ImageSource.FromResource(BaseResource + ".Resources.button_01_default.png"),
                    },
                    TextColor = Color.Black,
                    Text      = "Start",
                },
                PressingState = new Forms9Patch.ButtonState
                {
                    BackgroundImage = new Forms9Patch.Image
                    {
                        Source = Forms9Patch.ImageSource.FromResource(BaseResource + ".Resources.button_01_pressing.png"),
                    },
                },
                ToggleBehavior          = true,
                HeightRequest           = 50,
                HorizontalTextAlignment = TextAlignment.Center,
            };

            StackLayout slMain = new StackLayout()
            {
                Orientation = StackOrientation.Vertical,
                Children    =
                {
                    ibStartStop
                }
            };

            //ContentView fnpcvMain = new ContentView
            Forms9Patch.Frame fnpcvMain = new Forms9Patch.Frame
            {
                Content = slMain,
            };

            //Issue happens with this:
            Content = fnpcvMain;

            //It works fine with this:
            //Content = slMain;
        }
        public GestureTestPage()
        {
            #region Page

            //var pageListener = FormsGestures.Listener.For(this);

            //pageListener.LongPressing += (s, e) => System.Diagnostics.Debug.WriteLine("\tPAGE LONG PRESSING");
            //pageListener.LongPressed += (s, e) => System.Diagnostics.Debug.WriteLine("\tPAGE LONG PRESSED");


            #endregion

            #region Xamarin.Forms.Button
            var button = new Button
            {
                BackgroundColor = Color.Pink,
                Text            = "Hello",
                BorderColor     = Color.Blue,
                BorderWidth     = 3,
            };
            button.Clicked += (sender, e) => System.Diagnostics.Debug.WriteLine("\tBUTTON CLICKED!!!!");


            var buttonListener = FormsGestures.Listener.For(button);

            buttonListener.Down         += (sender, e) => System.Diagnostics.Debug.WriteLine("\tBUTTON DOWN [" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]"); // does not work with UIControl derived elements
            buttonListener.RightClicked += (sender, e) => System.Diagnostics.Debug.WriteLine("\tBUTTON RIGHT CLICK[" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]");

            buttonListener.LongPressing += (sender, e) => System.Diagnostics.Debug.WriteLine("\tBUTTON LONG PRESSING [" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]");
            buttonListener.Panning      += (sender, e) =>
            {
                System.Diagnostics.Debug.WriteLine("\tBUTTON PANNING [" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]");
                button.TranslationX += e.DeltaDistance.X;
                button.TranslationY += e.DeltaDistance.Y;
            };
            buttonListener.Pinching += (sender, e) =>
            {
                System.Diagnostics.Debug.WriteLine("\tBUTTON PINCHING [" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]");
                button.Scale *= e.DeltaScale;
            };
            buttonListener.Rotating += (sender, e) =>
            {
                System.Diagnostics.Debug.WriteLine("\tBUTTON ROTATING [" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]");
                button.Rotation += e.DeltaAngle;
            };

            buttonListener.Up           += (sender, e) => System.Diagnostics.Debug.WriteLine("\tBUTTON UP [" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]");                               // does not work with UIControl derived elements
            buttonListener.Tapped       += (sender, e) => System.Diagnostics.Debug.WriteLine("\tBUTTON TAPPED #[" + e.NumberOfTaps + "] [" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]"); // does not work with UIControl derived elements
            buttonListener.DoubleTapped += (sender, e) => System.Diagnostics.Debug.WriteLine("\tBUTTON DOUBLE TAPPED [" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]");                    // does not work with UIControl derived elements

            buttonListener.LongPressed += (sender, e) => System.Diagnostics.Debug.WriteLine("\tBUTTON LONG PRESSED [" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]");
            buttonListener.Panned      += (sender, e) => System.Diagnostics.Debug.WriteLine("\tBUTTON PANNED TotalDistance=[" + e.TotalDistance + "][" + e.Center + "][" + e.ViewPosition + "]");
            buttonListener.Swiped      += (sender, e) => System.Diagnostics.Debug.WriteLine("\tBUTTON SWIPED!!! Velocity=[" + e.VelocityX + "," + e.VelocityY + "][" + e.Center + "][" + e.ViewPosition + "]");

            buttonListener.Pinched += (sender, e) => System.Diagnostics.Debug.WriteLine("\tBUTTON PINCHED TotalScale=[" + e.TotalScale + "][" + e.Center + "][" + e.ViewPosition + "]");
            buttonListener.Rotated += (sender, e) => System.Diagnostics.Debug.WriteLine("\tBUTTON ROTATED TotalAngle=[" + e.TotalAngle + "][" + e.Center + "][" + e.ViewPosition + "]");

            #endregion


            #region Forms9Patch.Frame
            var frame = new Forms9Patch.Frame
            {
                BackgroundColor = Color.Orange,
                WidthRequest    = 70,
                HeightRequest   = 70,
                HasShadow       = true,
                OutlineColor    = Color.Green,
                OutlineRadius   = 0,
                OutlineWidth    = 1,
                Content         = new Forms9Patch.Label {
                    Text = "pizza", TextColor = Color.White, BackgroundColor = Color.Blue, HorizontalOptions = LayoutOptions.Start, VerticalOptions = LayoutOptions.Start
                }
            };
            var frameListener = FormsGestures.Listener.For(frame);

            frameListener.Down += (sender, e) =>
            {
                e.Handled = true;
                System.Diagnostics.Debug.WriteLine("\tFRAME DOWN [" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]");
            };
            frameListener.LongPressing += (sender, e) => System.Diagnostics.Debug.WriteLine("\tFRAME LONG PRESSING [" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]");
            frameListener.RightClicked += (sender, e) => System.Diagnostics.Debug.WriteLine("\tFRAME RIGHT CLICK[" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]");

            frameListener.Panning += (sender, e) =>
            {
                System.Diagnostics.Debug.WriteLine("\tFRAME PANNING [" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]");
                frame.TranslationX += e.DeltaDistance.X;
                frame.TranslationY += e.DeltaDistance.Y;
            };

            frameListener.Pinching += (sender, e) =>
            {
                System.Diagnostics.Debug.WriteLine("\tFRAME PINCHING [" + e.Center + "][" + e.Touches[0] + "][" + e.DeltaScale + "][" + e.ViewPosition + "]");
                frame.Scale *= e.DeltaScale;
            };
            frameListener.Rotating += (sender, e) =>
            {
                System.Diagnostics.Debug.WriteLine("\tFRAME ROTATING [" + e.Center + "][" + e.Touches[0] + "][" + e.DeltaAngle + "][" + e.ViewPosition + "]");
                frame.Rotation += e.DeltaAngle;
            };

            frameListener.Up           += (sender, e) => System.Diagnostics.Debug.WriteLine("\tFRAME UP [" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]");
            frameListener.Tapping      += (sender, e) => System.Diagnostics.Debug.WriteLine("\tFRAME TAPPING #[" + e.NumberOfTaps + "] [" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]");
            frameListener.Tapped       += (sender, e) => System.Diagnostics.Debug.WriteLine("\tFRAME TAPPED #[" + e.NumberOfTaps + "] [" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]");
            frameListener.DoubleTapped += (sender, e) => System.Diagnostics.Debug.WriteLine("\tFRAME DOUBLE TAPPED [" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]");

            frameListener.LongPressed += (sender, e) => System.Diagnostics.Debug.WriteLine("\tFRAME LONG PRESSED [" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]");
            frameListener.Panned      += (sender, e) => System.Diagnostics.Debug.WriteLine("\tFRAME PANNED TotalDistance=[" + e.TotalDistance + "][" + e.Center + "][" + e.ViewPosition + "]");
            frameListener.Swiped      += (sender, e) => System.Diagnostics.Debug.WriteLine("\tFRAME SWIPED!!! Velocity=" + e.VelocityX + "," + e.VelocityY + "][" + e.Center + "][" + e.ViewPosition + "]");

            frameListener.Pinched += (sender, e) => System.Diagnostics.Debug.WriteLine("\tFRAME PINCHED TotalScale=[" + e.TotalScale + "][" + e.Center + "][" + e.ViewPosition + "]");
            frameListener.Rotated += (sender, e) => System.Diagnostics.Debug.WriteLine("\tFRAME ROTATED TotalAngle[" + e.TotalAngle + "][" + e.Center + "][" + e.ViewPosition + "]");
            #endregion


            #region Xamarin.Forms.BoxView
            var box = new BoxView
            {
                BackgroundColor = Color.Green,
            };
            var boxListener = FormsGestures.Listener.For(box);

            //boxListener.Down += OnDown;
            boxListener.Down += (sender, e) =>
            {
                e.Handled = true;
                System.Diagnostics.Debug.WriteLine("\tBOX DOWN [" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]");
            };
            boxListener.LongPressing += (sender, e) => System.Diagnostics.Debug.WriteLine("\tBOX LONG PRESSING [" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]");
            boxListener.RightClicked += (sender, e) => System.Diagnostics.Debug.WriteLine("\tBOX RIGHT CLICK[" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]");

            boxListener.Panning += (sender, e) =>
            {
                System.Diagnostics.Debug.WriteLine("\tBOX PANNING [" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]");
                box.TranslationX += e.DeltaDistance.X;
                box.TranslationY += e.DeltaDistance.Y;
            };

            boxListener.Pinching += (sender, e) =>
            {
                System.Diagnostics.Debug.WriteLine("\tBOX PINCHING [" + e.Center + "][" + e.Touches[0] + "][" + e.DeltaScale + "][" + e.ViewPosition + "]");
                box.Scale *= e.DeltaScale;
            };
            boxListener.Rotating += (sender, e) =>
            {
                System.Diagnostics.Debug.WriteLine("\tBOX ROTATING [" + e.Center + "][" + e.Touches[0] + "][" + e.DeltaAngle + "][" + e.ViewPosition + "]");
                box.Rotation += e.DeltaAngle;
            };

            boxListener.Up           += (sender, e) => System.Diagnostics.Debug.WriteLine("\tBOX UP [" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]");
            boxListener.Tapping      += (sender, e) => System.Diagnostics.Debug.WriteLine("\tBOX TAPPING #[" + e.NumberOfTaps + "] [" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]");
            boxListener.Tapped       += (sender, e) => System.Diagnostics.Debug.WriteLine("\tBOX TAPPED #[" + e.NumberOfTaps + "] [" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]");
            boxListener.DoubleTapped += (sender, e) => System.Diagnostics.Debug.WriteLine("\tBOX DOUBLE TAPPED [" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]");

            boxListener.LongPressed += (sender, e) => System.Diagnostics.Debug.WriteLine("\tBOX LONG PRESSED [" + e.Center + "][" + e.Touches[0] + "][" + e.ViewPosition + "]");
            boxListener.Panned      += (sender, e) => System.Diagnostics.Debug.WriteLine("\tBOX PANNED TotalDistance=[" + e.TotalDistance + "][" + e.Center + "][" + e.ViewPosition + "]");
            boxListener.Swiped      += (sender, e) => System.Diagnostics.Debug.WriteLine("\tBOX SWIPED!!! Velocity=" + e.VelocityX + "," + e.VelocityY + "][" + e.Center + "][" + e.ViewPosition + "]");

            boxListener.Pinched += (sender, e) => System.Diagnostics.Debug.WriteLine("\tBOX PINCHED TotalScale=[" + e.TotalScale + "][" + e.Center + "][" + e.ViewPosition + "]");
            boxListener.Rotated += (sender, e) => System.Diagnostics.Debug.WriteLine("\tBOX ROTATED TotalAngle[" + e.TotalAngle + "][" + e.Center + "][" + e.ViewPosition + "]");

            #endregion


            #region Looking for multiple taps
            var tapBox = new BoxView
            {
                BackgroundColor = Color.Blue,
            };
            var tapBoxListener = FormsGestures.Listener.For(tapBox);

            tapBoxListener.Tapping      += (sender, e) => System.Diagnostics.Debug.WriteLine("\tTAPBOX TAPPING #[" + e.NumberOfTaps + "]");
            tapBoxListener.Tapped       += (sender, e) => System.Diagnostics.Debug.WriteLine("\tTAPBOX TAPPED #[" + e.NumberOfTaps + "]");
            tapBoxListener.DoubleTapped += (sender, e) => System.Diagnostics.Debug.WriteLine("\tTAPBOX DOUBLE TAPPED #[" + e.NumberOfTaps + "]");

            #endregion


            #region RelativeLayout
            relativeLayout = new Xamarin.Forms.RelativeLayout
            {
                HorizontalOptions = LayoutOptions.FillAndExpand,
                VerticalOptions   = LayoutOptions.FillAndExpand,
                Padding           = new Thickness(0),
                BackgroundColor   = Color.Transparent,
            };
            relativeLayout.Children.Clear();

            relativeLayout.Children.Add(button,
                                        xConstraint: Constraint.RelativeToParent((parent) => { return(parent.X + parent.Width * 3 / 4); }),
                                        yConstraint: Constraint.RelativeToParent((parent) => { return(parent.Y + parent.Height * 3 / 4); }),
                                        widthConstraint: Constraint.RelativeToParent((parent) => { return(parent.Width / 3); }),
                                        heightConstraint: Constraint.RelativeToParent((parent) => { return(parent.Width / 3); })
                                        );
            relativeLayout.Children.Add(box,
                                        xConstraint: Constraint.RelativeToParent((parent) => { return(parent.X + parent.Width / 4); }),
                                        yConstraint: Constraint.RelativeToParent((parent) => { return(parent.Y + parent.Height / 4); }),
                                        widthConstraint: Constraint.RelativeToParent((parent) => { return(parent.Width / 2); }),
                                        heightConstraint: Constraint.RelativeToParent((parent) => { return(parent.Width / 2); })
                                        );
            relativeLayout.Children.Add(tapBox,
                                        xConstraint: Constraint.RelativeToParent((parent) => { return(parent.X + parent.Width / 8); }),
                                        yConstraint: Constraint.RelativeToParent((parent) => { return(parent.Y + parent.Height / 8); }),
                                        widthConstraint: Constraint.RelativeToParent((parent) => { return(parent.Width / 16); }),
                                        heightConstraint: Constraint.RelativeToParent((parent) => { return(parent.Width / 16); })
                                        );
            relativeLayout.Children.Add(frame,
                                        xConstraint: Constraint.RelativeToParent((parent) => { return(parent.X + parent.Width * 1 / 4); }),
                                        yConstraint: Constraint.RelativeToParent((parent) => { return(parent.Y + parent.Height / 8); })
                                        );

            #endregion


            #region AbsoluteLayout
            absoluteLayout = new Xamarin.Forms.AbsoluteLayout
            {
                HorizontalOptions = LayoutOptions.FillAndExpand,
                VerticalOptions   = LayoutOptions.FillAndExpand,
                // Padding = new Thickness(5, Device.OnPlatform(20, 0, 0), 5, 5),
                Padding = new Thickness(5, 5, 5, 5),                    // given tool bar don't need upper padding

                BackgroundColor = Color.White
            };
            absoluteLayout.Children.Add(relativeLayout,
                                        new Rectangle(0, 0, 1, 1), AbsoluteLayoutFlags.All
                                        );

            #endregion

            Content = absoluteLayout;
        }