void SetChildLayout(FloatingView child)
        {
            var renderer = PlatformUtility.GetOrCreateNativeView(child, Context);

            var nativeChild = renderer.View;

            Element.LayoutChild(child);

            int width  = -1;
            int height = -1;

            if (child.HorizontalLayoutAlignment != XF.LayoutAlignment.Fill)
            {
                width = (int)Context.ToPixels(child.Bounds.Width);
            }

            if (child.VerticalLayoutAlignment != XF.LayoutAlignment.Fill)
            {
                height = (int)Context.ToPixels(child.Bounds.Height);
            }


            using (var param = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent)
            {
                Width = width,
                Height = height,
                Gravity = GetGravity(child),
            })
            {
                SetOffsetMargin(param, child);
                Control.AddView(nativeChild, param);
            }
        }
        internal void SetOffsetMargin(FrameLayout.LayoutParams layoutParams, FloatingView view)
        {
            var offsetX = (int)Context.ToPixels(view.OffsetX);

            if (view.HorizontalLayoutAlignment == LayoutAlignment.Fill)
            {
                offsetX = 0;
            }
            var offsetY = (int)Context.ToPixels(view.OffsetY);

            if (view.VerticalLayoutAlignment == LayoutAlignment.Fill)
            {
                offsetY = 0;
            }

            // the offset direction is reversed when GravityFlags contains Left or Bottom.
            if (view.HorizontalLayoutAlignment == XF.LayoutAlignment.End)
            {
                layoutParams.RightMargin = offsetX * -1;
            }
            else
            {
                layoutParams.LeftMargin = offsetX;
            }

            if (view.VerticalLayoutAlignment == XF.LayoutAlignment.End)
            {
                layoutParams.BottomMargin = offsetY * -1;
            }
            else
            {
                layoutParams.TopMargin = offsetY;
            }
        }
        internal GravityFlags GetGravity(FloatingView view)
        {
            GravityFlags gravity = GravityFlags.NoGravity;

            switch (view.VerticalLayoutAlignment)
            {
            case XF.LayoutAlignment.Start:
                gravity |= GravityFlags.Top;
                break;

            case XF.LayoutAlignment.End:
                gravity |= GravityFlags.Bottom;
                break;

            case XF.LayoutAlignment.Center:
                gravity |= GravityFlags.CenterVertical;
                break;

            default:
                gravity |= GravityFlags.FillVertical;
                break;
            }

            switch (view.HorizontalLayoutAlignment)
            {
            case XF.LayoutAlignment.Start:
                gravity |= GravityFlags.Left;
                break;

            case XF.LayoutAlignment.End:
                gravity |= GravityFlags.Right;
                break;

            case XF.LayoutAlignment.Center:
                gravity |= GravityFlags.CenterHorizontal;
                break;

            default:
                gravity |= GravityFlags.FillHorizontal;
                break;
            }

            return(gravity);
        }
Beispiel #4
0
        void initComponent()
        {
            floatView = new FloatingView();
            View.Add(floatView);
            floatView.Navigate2Reader        += FloatView_Navigate2Reader;
            floatView.Navigate2ReaderStarted += (object sender) => {
                UIView.Animate(0.35, () => {
                    backgroundImage.Alpha = 0;
                    waitImage.Alpha       = 1;
                });
            };

            floatView.backCenterImage.Image = UIImage.FromFile("efiles/fondologin.jpg");

            UITapGestureRecognizer dologout = new UITapGestureRecognizer(() => {
                vm.LogoutCommand.Execute(null);
            });

            floatView.doAskButton.AddGestureRecognizer(dologout);
        }
Beispiel #5
0
 public FloatingView GetFloatingConfig(SecurityConfig config, string channel, int version)
 {
     if (config != null)
     {
         if (version >= config.LatestVersion)
         {
             return(null);
         }
         else
         {
             var floatingconfig = dbContextService.Single <FloatingModel>(x => x.Version == config.LatestVersion && x.Status == 1);
             var floatingView   = new FloatingView()
             {
                 JsonResult = floatingconfig.JsonResult,
                 Version    = config.LatestVersion,
                 Rate       = config.Rate
             };
             return(floatingView);
         }
     }
     return(null);
 }
Beispiel #6
0
        protected override void OnAppearing()
        {
            base.OnAppearing();

            if (!hasInitialization)
            {
                BindingContext = new StatusesViewModel(position);

                var cancel = new ToolbarItem {
                    Text    = "添加",
                    Command = new Command(async() => {
                        if (UserTokenSettings.Current.HasExpiresIn())
                        {
                            MessagingService.Current.SendMessage(MessageKeys.NavigateLogin);
                        }
                        else
                        {
                            await NavigationService.PushAsync(Navigation, new StatusesEditPage(new Statuses(), new Action <Statuses>(OnResult)));
                        }
                    }),
                    Icon = "toolbar_add.png"
                };
                ToolbarItems.Add(cancel);

                this.StatusesListView.HasFloatingView = true;
                this.StatusesListView.ItemSelected   += async delegate {
                    var statuses = StatusesListView.SelectedItem as Statuses;
                    this.StatusesListView.SelectedItem = null;
                    if (statuses == null)
                    {
                        return;
                    }

                    var statusesDetails = new StatusesDetailsPage(statuses);
                    if (statuses.Id > 0)
                    {
                        await NavigationService.PushAsync(Navigation, statusesDetails);
                    }
                };

                var floatingView = new FloatingView();

                this.StatusesListView.FloatingChanged += delegate(object sender, bool floating) {
                    if (Device.RuntimePlatform == Device.Android)
                    {
                        if (floating)
                        {
                            floatingView.ToggleFloatingView = true;
                        }
                        else
                        {
                            floatingView.ToggleFloatingView = false;
                        }
                    }
                };
                if (Device.RuntimePlatform == Device.Android)
                {
                    floatingView.Image       = "toolbar_add.png";
                    floatingView.ButtonColor = Color.FromHex("#E64A19");
                    AbsoluteLayout.SetLayoutBounds(floatingView, new Rectangle(1, .9, 80, 90));
                    AbsoluteLayout.SetLayoutFlags(floatingView, AbsoluteLayoutFlags.PositionProportional);
                    floatingView.Clicked += async delegate(object sender, EventArgs e) {
                        if (UserTokenSettings.Current.HasExpiresIn())
                        {
                            MessagingService.Current.SendMessage(MessageKeys.NavigateLogin);
                        }
                        else
                        {
                            await NavigationService.PushAsync(this.Navigation, new StatusesEditPage(new Statuses()));
                        }
                    };
                    this.AbsoluteLayout.Children.Add(floatingView);
                }

                ViewModel.GetClientStatusesAsync();
                hasInitialization = true;
            }
            UpdatePage();
        }
        internal static void SetLayoutAlignment(UIView targetView, UIView parentView, FloatingView floating)
        {
            targetView.TranslatesAutoresizingMaskIntoConstraints = false;
            parentView.AddSubview(targetView);

            if (floating.HorizontalLayoutAlignment != LayoutAlignment.Fill)
            {
                targetView.WidthAnchor.ConstraintEqualTo((System.nfloat)floating.Bounds.Width).Active = true;
            }
            if (floating.VerticalLayoutAlignment != LayoutAlignment.Fill)
            {
                targetView.HeightAnchor.ConstraintEqualTo((System.nfloat)floating.Bounds.Height).Active = true;
            }

            switch (floating.VerticalLayoutAlignment)
            {
            case Xamarin.Forms.LayoutAlignment.Start:
                targetView.TopAnchor.ConstraintEqualTo(parentView.TopAnchor, floating.OffsetY).Active = true;
                break;

            case Xamarin.Forms.LayoutAlignment.End:
                targetView.BottomAnchor.ConstraintEqualTo(parentView.BottomAnchor, floating.OffsetY).Active = true;
                break;

            case Xamarin.Forms.LayoutAlignment.Center:
                targetView.CenterYAnchor.ConstraintEqualTo(parentView.CenterYAnchor, floating.OffsetY).Active = true;
                break;

            default:
                targetView.HeightAnchor.ConstraintEqualTo(parentView.HeightAnchor).Active = true;
                break;
            }

            switch (floating.HorizontalLayoutAlignment)
            {
            case Xamarin.Forms.LayoutAlignment.Start:
                targetView.LeftAnchor.ConstraintEqualTo(parentView.LeftAnchor, floating.OffsetX).Active = true;
                break;

            case Xamarin.Forms.LayoutAlignment.End:
                targetView.RightAnchor.ConstraintEqualTo(parentView.RightAnchor, floating.OffsetX).Active = true;
                break;

            case Xamarin.Forms.LayoutAlignment.Center:
                targetView.CenterXAnchor.ConstraintEqualTo(parentView.CenterXAnchor, floating.OffsetX).Active = true;
                break;

            default:
                targetView.WidthAnchor.ConstraintEqualTo(parentView.WidthAnchor).Active = true;
                break;
            }
        }