Пример #1
0
        private bool SetFrame(float left, float top, float right, float bottom)
        {
            bool changed = false;

            if (_layoutPositionData.Left != left ||
                _layoutPositionData.Right != right ||
                _layoutPositionData.Top != top ||
                _layoutPositionData.Bottom != bottom)
            {
                changed = true;

                float oldWidth    = _layoutPositionData.Right - _layoutPositionData.Left;
                float oldHeight   = _layoutPositionData.Bottom - _layoutPositionData.Top;
                float newWidth    = right - left;
                float newHeight   = bottom - top;
                bool  sizeChanged = (newWidth != oldWidth) || (newHeight != oldHeight);

                // Set condition to layout changed as currently unspecified. Add, Remove would have specified a condition.
                if (ConditionForAnimation.HasFlag(TransitionCondition.Unspecified))
                {
                    ConditionForAnimation = TransitionCondition.LayoutChanged;
                }

                // Store new layout position data
                _layoutPositionData = new LayoutData(this, ConditionForAnimation, left, top, right, bottom);

                Window.Instance.LayoutController.AddTransitionDataEntry(_layoutPositionData);

                // Reset condition for animation ready for next transition when required.
                ConditionForAnimation = TransitionCondition.Unspecified;
            }

            return(changed);
        }
Пример #2
0
        /// <summary>
        /// Initialize the layout and allow derived classes to also perform any operations
        /// </summary>
        /// <param name="owner">Owner of this Layout.</param>
        internal void AttachToOwner(View owner)
        {
            // Assign the layout owner.
            Owner = owner;
            OnAttachedToOwner();
            // Add layout to parent layout if a layout container
            View parent = Owner.GetParent() as View;

            (parent?.Layout as LayoutGroup)?.Add(this);

            // If Add or ChangeOnAdd then do not update condition
            if (ConditionForAnimation.HasFlag(TransitionCondition.Unspecified))
            {
                ConditionForAnimation = TransitionCondition.LayoutChanged;
            }
        }